쿠폰을 사용한 정보를 가지고 일자별로
총 발급건수 / 사용건수 / 쿠폰비용을 뽑아 내려고 합니다.
쿠폰종류별로 일자별로 추출하려고 하는데요...
SELECT "쿠폰번호" , "쿠폰유형" , "쿠폰명" , (SELECT COUNT(1) FROM 쿠폰발행정보 WHERE 쿠폰번호=C.쿠폰번호 AND TO_CHAR(쿠폰발급일,'YYYYMMDDHH24MISS') BETWEEN '20170425000000' AND '20170430235959') "총발급수" , (SELECT COUNT(1) FROM 쿠폰발행정보 WHERE 쿠폰사용여부='Y' AND 쿠폰번호=C.쿠폰번호 AND TO_CHAR(쿠폰사용일,'YYYYMMDDHH24MISS') BETWEEN '20170425000000' AND '20170430235959') "사용수" ,SUM(B.쿠폰사용비용) "사용금액" FROM 주문 A, 주문부가비용 B, 쿠폰발행정보 C WHERE A.주문번호=B.주문번호 AND A.주문번호=C.주문번호 AND C.쿠폰사용여부='Y' AND TO_CHAR(C.쿠폰사용일,'YYYYMMDDHH24MISS') BETWEEN '20170425000000' AND '20170430235959' AND B.사용된쿠폰발행번호=C.쿠폰발행번호 GROUP BY 쿠폰번호 ;
대략적인 쿼리는 이렇게 해봤는데..
일자별로 쿠폰종류별로 총 발급건수 / 사용건수 / 쿠폰비용을 뽑아 내기가 어렵네요..
스칼라 서브쿼리를 사용하면 안되고 WHERE 서브쿼리로 해야 할거 같은데...
팁좀 부탁드립니다 ㅠ.ㅠ
우연찮게 검색해봤을때 마농님 팁을 봤는데..
날짜 범위를 CONNECT BY LEVEL로 테이블로 만들어서 업무테이블과 join해서 rollup(?)을 하신것을 보긴 했는데....ㅠ.ㅠ
선배님들 도움 부탁드립니다.
SELECT 일자 , 쿠폰유형 , SUM(발급건수) 발급건수 , SUM(사용건수) 사용건수 , SUM(사용금액) 사용금액 FROM (SELECT TO_CHAR(쿠폰발급일, 'yyyymmdd') 일자 , 쿠폰유형 , COUNT(*) 발급건수 , 0 사용건수 , 0 사용금액 FROM 쿠폰발행정보 WHERE 쿠폰발급일 >= TO_DATE('20170425', 'yyyymmdd') AND 쿠폰발급일 < TO_DATE('20170430', 'yyyymmdd') + 1 GROUP BY TO_CHAR(쿠폰발급일, 'yyyymmdd'), 쿠폰유형 UNION ALL SELECT TO_CHAR(쿠폰사용일, 'yyyymmdd') 일자 , 쿠폰유형 , 0 발급건수 , COUNT(*) 사용건수 , SUM(b.쿠폰사용비용) 사용금액 FROM 쿠폰발행정보 a , 주문부가비용 b WHERE a.쿠폰사용일 >= TO_DATE('20170425', 'yyyymmdd') AND a.쿠폰사용일 < TO_DATE('20170430', 'yyyymmdd') + 1 AND a.쿠폰사용여부 = 'Y' AND a.쿠폰발행번호 = b.사용된쿠폰발행번호 GROUP BY TO_CHAR(쿠폰사용일, 'yyyymmdd'), 쿠폰유형 ) GROUP BY 일자, 쿠폰유형 ;