도와주세요 형님 0 1 698

by 스티브1조 [2018.03.05 22:02:15]


SELECT NVL(ageInfo, '총 당첨자수') ageInfo
      , nvl(SUM(DECODE(gift_cd, '170013935', evt_win_cnt)),0) s1
     , nvl(SUM(DECODE(gift_cd, '110650627', evt_win_cnt)),0) s2
     , nvl(SUM(DECODE(gift_cd, '111650343', evt_win_cnt)),0) s3
     , nvl(SUM(DECODE(gift_cd, '111971655', evt_win_cnt)),0) s4
     , nvl(SUM(DECODE(gift_cd, '111130402', evt_win_cnt)),0) s5
     , nvl(SUM(DECODE(gift_cd, '111072037', evt_win_cnt)),0) s6
     , nvl(SUM(DECODE(gift_cd, '111170102', evt_win_cnt)),0) s7
 
     , SUM(evt_win_cnt) totalSum
     , CONCAT(TRIM('.' FROM TO_CHAR(ROUND(
       RATIO_TO_REPORT(SUM(evt_win_cnt)) OVER(PARTITION BY GROUPING(ageInfo))
       * 100, 2),'fm990.99')),'%') totalAvg
  FROM (SELECT gift_cd
             , evt_win_cnt
             , CASE WHEN area = '서울' THEN area
                    WHEN area = '경기' THEN area
                    WHEN area = '부산' THEN area
                    WHEN area = '강원' THEN area
                    WHEN area = '충남' THEN area
                END AS ageInfo
          FROM summary_aprilday

        ) a
 GROUP BY ROLLUP(ageInfo)
 ORDER BY a.ageInfo NULLS FIRST
;

 

데이터가 서울 경기만있어요 나머지는데이터가 없는데 혹시 0이라도 결과값을 표기하고싶은데 안나오네요 방법좀 ㅜㅜㅜ

by 마농 [2018.03.06 08:29:20]
WITH code AS
(
-- 기준 코드 : 코드테이블을 이용하면 좋음 --
SELECT 0 rn, '총 당첨자수' gb FROM dual
UNION ALL SELECT 1, '서울' FROM dual
UNION ALL SELECT 2, '경기' FROM dual
UNION ALL SELECT 3, '부산' FROM dual
UNION ALL SELECT 4, '강원' FROM dual
UNION ALL SELECT 5, '충남' FROM dual
)
, data AS
(
-- 집계 --
SELECT NVL(gb, '총 당첨자수') gb
     , SUM(DECODE(cd, '170013935', cnt)) s1
     , SUM(DECODE(cd, '110650627', cnt)) s2
     , SUM(DECODE(cd, '111650343', cnt)) s3
     , SUM(DECODE(cd, '111971655', cnt)) s4
     , SUM(DECODE(cd, '111130402', cnt)) s5
     , SUM(DECODE(cd, '111072037', cnt)) s6
     , SUM(DECODE(cd, '111170102', cnt)) s7
     , SUM(cnt) totalSum
     , RTRIM(TO_CHAR(
       RATIO_TO_REPORT(SUM(cnt)) OVER(PARTITION BY GROUPING(gb)) * 100
       , 'fm990.99'), '.') || '%' totalRat
   FROM (SELECT area        gb     -- 세로행기준
              , gift_cd     cd     -- 가로열기준
              , evt_win_cnt cnt    -- 집계항목
           FROM summary_aprilday
         ) a
  GROUP BY ROLLUP(gb)
)
SELECT a.gb
     , NVL(b.s1, 0) s1
     , NVL(b.s2, 0) s2
     , NVL(b.s3, 0) s3
     , NVL(b.s4, 0) s4
     , NVL(b.s5, 0) s5
     , NVL(b.s6, 0) s6
     , NVL(b.s7, 0) s7
     , NVL(b.totalSum,  0  ) totalSum
     , NVL(b.totalRat, '0%') totalRat
  FROM code a
  LEFT OUTER JOIN data b
    ON a.gb = b.gb
 ORDER BY a.rn
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입