728x90
반응형

CASE, GROUP BY 활용

 

'HP'라는 제품은 너무 많은 등급을 가지고 있어 제품별로 분석하기를 원하고,

'LD'라는 제품은 등급의 수가 적고 중요하므로 등급별로 분석하기를 원하며,

'PP'라는 제품은 다양한 등급을 가지고 있으나 'P530C'라는 등급은 전략적으로 관리하고자 하여 등급별로 분석하고,

나머지는 기타로 모아주기를 원한다고 생각하자

 

이런 경우에는 CASE와 GROUP BY를 활용하여 풀어보자

 

SELECT

   CASE WHEN 제품 = ‘HP’ THEN 제품

   WHEN 제품 = ‘LD’ THEN 등급 ,

   WHEN 등급 = ‘P530C’ THEN 등급

   ELSE ’기타‘

   END

FROM 매출테이블

WHERE 매출일자 LIKE ’9808%’

GROUP BY CASE WHEN 제품 = ‘HP’ THEN 제품

                                  WHEN 제품 = ‘LD’ THEN 등급 ,

                                  WHEN 등급 = ‘P530C’ THEN 등급

ELSE '기타'

END

 

 

SALE_HIST 테이블을 참조하여 ‘PENCIL’ 총 판매금액과 01번 사업장의 총판매금액과

ERASER를 판매하고 있는 사업장의 총판매 금액을 출력하고 그 나머지를 기타로 묶어 총 판매금액을 출력하시오

SELECT

   CASE WHEN SALE_ITEM = 'PENCIL' THEN SALE_ITEM

   WHEN SALE_ITEM = 'ERASER' THEN SALE_SITE

   WHEN SALE_SITE = 01 THEN SALE_SITE

   ELSE '기타'

   END AS 특별관리항목,

   SUM(SALE_AMT) AS 총판매금액

FROM SALE_HIST

GROUP BY CASE WHEN SALE_ITEM = 'PENCIL' THEN SALE_ITEM

                                  WHEN SALE_ITEM = 'ERASER' THEN SALE_SITE

                                  WHEN SALE_SITE = 01 THEN SALE_SITE

ELSE '기타'

END

 

 

TEST100 테이블을 참조하여 C2에 해당하는 값의 비율을 구하여라

SELECT C1, C2

,ROUND(RATIO_TO_REPORT(C2) OVER(),2) * 100 AS PER

FROM TEST100

 

 

TEST35 테이블을 참조하여 KEY1은 부서라고 생각하고 KEY2의 A는 판매액 B는 매입액이라고 할 때

부서별 판매액과 매입액의 차에대한 값(수익)을 구하고 차액의 비율을 구하시오

SELECT

CASE WHEN KEY1 IS NOT NULL THEN KEY1 ELSE '합계' END AS KEY1

   , SUM(CASE WHEN KEY2 = 'A' THEN AMT ELSE 0 END) AS 판매액

   , SUM(CASE WHEN KEY2 = 'B' THEN AMT ELSE 0 END) AS 매입액

   , SUM(CASE WHEN KEY2 = 'A' THEN AMT ELSE - AMT END) AS 수익

   , ROUND(SUM(CASE WHEN KEY2='A' THEN AMT ELSE -AMT END)/ SUM(CASE WHEN KEY2='A' THEN AMT END)*100 )AS PER

FROM (SELECT KEY1, KEY2, SUM(AMT) AMT

               FROM TEST35

               GROUP BY ROLLUP(KEY1), KEY2

)

GROUP BY CASE WHEN KEY1 IS NOT NULL THEN KEY1 ELSE '합계' END

ORDER BY KEY1

728x90
반응형

+ Recent posts

Powered by Tistory, Designed by wallel