SELECT giftNm 경품명, SUM (giftCnt) 경품수, SUM (winCnt) 당첨자수, SUM (remainCnt) 남은수량 FROM (SELECT A.SCRATCH_GIFT_NM AS giftNm , A.GIFT_READY_CNT AS giftCnt , NVL (B.GIFT_WIN_CNT, 0) AS winCnt , A.GIFT_READY_CNT - NVL (B.GIFT_WIN_CNT, 0) AS remainCnt FROM EVT_SCRATCH_GIFT A , (SELECT SCRATCH_GIFT_CD, COUNT (*) GIFT_WIN_CNT FROM EVT_SCRATCH_WIN where win_dtm BETWEEN '20180402' AND '20180404' GROUP BY SCRATCH_GIFT_CD) B WHERE A.SCRATCH_GIFT_CD = B.SCRATCH_GIFT_CD(+)) GROUP BY ROLLUP (giftNm) ORDER BY 경품수 NULLS FIRST 결과값이 이렇게나오구요 경품명 경품수 당첨자수 남은수량 LG트롬스타일러 10 1 9 SMEG냉장고 10 1 9 고프로카메라 20 1 19 발뮤다공기청정기 30 1 29 다이슨헤어드라이기 40 1 39 마샬스피커 50 0 50 드롱기커피포트 70 1 69 세븐라이너다리마시지기 70 0 70 화장대 700 1 699 1000 7 993 이렇게 나옵니다 그러나 제가원하는값은 누적당첨자수까지구가하고싶네요 제가 한쿼리는 특정한날짜로 조회를 했는데 그건 그거대로 조회를 하는데 테이블에 있는 당첨자수를 누적으로 보여주고싶어요 도와주세요 ㅜㅜ 아래 제가 원하는값입니다 경품명 경품수 당첨자수 남은수량 *누적당첨자수* LG트롬스타일러 10 1 9 SMEG냉장고 10 1 9 고프로카메라 20 1 19 발뮤다공기청정기 30 1 29 다이슨헤어드라이기 40 1 39 마샬스피커 50 0 50 드롱기커피포트 70 1 69 세븐라이너다리마시지기 70 0 70 화장대 700 1 699 1000 7 993
SELECT giftNm 경품명 , SUM(giftCnt) 경품수 , SUM(winCnt ) 당첨자수 , SUM(remainCnt) 남은수량 , SUM(SUM(winCnt)) OVER(PARTITION BY GROUPING(giftNm) ORDER BY SUM(giftCnt), giftNm) 누적당첨자수 FROM (SELECT a.scratch_gift_nm AS giftNm , a.gift_ready_cnt AS giftCnt , NVL(b.gift_win_cnt, 0) AS winCnt , a.gift_ready_cnt - NVL(b.gift_win_cnt, 0) AS remainCnt FROM evt_scratch_gift a , (SELECT scratch_gift_cd , COUNT(*) gift_win_cnt FROM evt_scratch_win WHERE win_dtm BETWEEN '20180402' AND '20180404' GROUP BY scratch_gift_cd ) b WHERE a.scratch_gift_cd = b.scratch_gift_cd(+) ) GROUP BY ROLLUP(giftNm) ;
SELECT giftNm 경품명 , SUM(giftCnt) 경품수 , SUM(winCnt1) 당첨자수 , SUM(remainCnt) 남은수량 , SUM(winCnt2) 누적당첨자수 FROM (SELECT a.scratch_gift_nm AS giftNm , a.gift_ready_cnt AS giftCnt , NVL(b.winCnt1, 0) AS winCnt1 , NVL(b.winCnt2, 0) AS winCnt2 , a.gift_ready_cnt - NVL(b.winCnt1, 0) AS remainCnt FROM evt_scratch_gift a , (SELECT scratch_gift_cd , COUNT(CASE WHEN win_dtm BETWEEN '20180402' AND '20180404' THEN 1 END) winCnt1 , COUNT(*) winCnt2 FROM evt_scratch_win GROUP BY scratch_gift_cd ) b WHERE a.scratch_gift_cd = b.scratch_gift_cd(+) ) GROUP BY ROLLUP(giftNm) ORDER BY 경품수 ;