안녕하세요.
너무 많은시간을 할애하다 해결하지 못한 쿼리를 고수분들께 여쭙습니다.
모든 데이터는 구분(과일명), 판매날짜, 수량 으로 이루어져 있습니다.
예를들어
수박 | 20170101 | 3 |
수박 | 20170102 | 5 |
수박 | 20170103 | 8 |
사과 | 20170301 | 5 |
사과 | 20170305 | 6 |
수박은 판매 기간이 20170101 ~ 20170131 까지
사과는 판매기간이 20170301 ~ 20170630 까지 있다고 하면.
모든 과일의 판매 시작일로 부터 5일동안의 판매량을 구하고 싶습니다.
그래서 row_number 를 이용해서
과일 | 시작일 | 종료일 |
수박 | 20170101 | 20170105 |
사과 | 20170301 | 20170308(안팔린날도 있겠죠?) |
를 서브쿼리로 추출하고
서브쿼리로 추출한 시작일과 종료일을
메인쿼리로 조건을 집어넣을 수 있을까요?
예를들면
모든 과일당
날짜 between 시작일 and 종료일
을 조건절로 넣으려 합니다.. 제가 생각한게 가능은 한 부분인지..여쭈어봅니다!
물론 과일이...수백 종류가 되어서 일일이 로우넘버로 나온 시작일과 종료일을 조건절로 넣긴 어렵거든요...^^;;;;
두서없이 죄송합니다.
WITH T AS ( SELECT '수박' FRNM, '20170101' SALEDT, 3 QTY FROM DUAL UNION ALL SELECT '수박' FRNM, '20170102' SALEDT, 2 QTY FROM DUAL UNION ALL SELECT '수박' FRNM, '20170103' SALEDT, 1 QTY FROM DUAL UNION ALL SELECT '수박' FRNM, '20170105' SALEDT, 8 QTY FROM DUAL UNION ALL SELECT '수박' FRNM, '20170106' SALEDT, 9 QTY FROM DUAL UNION ALL SELECT '수박' FRNM, '20170108' SALEDT, 8 QTY FROM DUAL UNION ALL SELECT '수박' FRNM, '20170110' SALEDT, 5 QTY FROM DUAL UNION ALL SELECT '수박' FRNM, '20170111' SALEDT, 2 QTY FROM DUAL UNION ALL SELECT '수박' FRNM, '20170112' SALEDT, 3 QTY FROM DUAL UNION ALL SELECT '사과' FRNM, '20170101' SALEDT, 4 QTY FROM DUAL UNION ALL SELECT '사과' FRNM, '20170102' SALEDT, 5 QTY FROM DUAL UNION ALL SELECT '사과' FRNM, '20170103' SALEDT, 6 QTY FROM DUAL ) SELECT FRNM, MIN(SALEDT) SDT, MAX(SALEDT) EDT, SUM(QTY) QTYSUM FROM ( SELECT FRNM, SALEDT, QTY , ROW_NUMBER() OVER(PARTITION BY FRNM ORDER BY SALEDT) RN FROM T ) WHERE RN <= 5 GROUP BY FRNM