기간 조건 절 문의 (Between 이용) 0 2 848

by 임태원 [2017.07.20 18:41:16]


안녕하세요.

너무 많은시간을 할애하다 해결하지 못한 쿼리를 고수분들께 여쭙습니다.

모든 데이터는 구분(과일명), 판매날짜, 수량 으로 이루어져 있습니다.

 

예를들어

수박 20170101 3
수박 20170102 5
수박 20170103 8
사과 20170301 5
사과 20170305 6

수박은 판매 기간이 20170101 ~ 20170131 까지

사과는 판매기간이 20170301 ~ 20170630 까지 있다고 하면.

모든 과일의 판매 시작일로 부터 5일동안의 판매량을 구하고 싶습니다.

그래서 row_number 를 이용해서

과일 시작일 종료일
수박 20170101 20170105
사과 20170301 20170308(안팔린날도 있겠죠?)

를 서브쿼리로 추출하고

서브쿼리로 추출한 시작일과 종료일을

메인쿼리로 조건을 집어넣을 수 있을까요?

예를들면

모든 과일당

날짜 between 시작일 and 종료일

을 조건절로 넣으려 합니다.. 제가 생각한게 가능은 한 부분인지..여쭈어봅니다!
물론 과일이...수백 종류가 되어서 일일이 로우넘버로 나온 시작일과 종료일을 조건절로 넣긴 어렵거든요...^^;;;;

두서없이 죄송합니다.

by jkson [2017.07.20 19:49:24]
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

 


by 임태원 [2017.07.20 22:53:56]

감사합니다.
늘 배우고 갑니다~
서브쿼리를 만들려는 생각만 했지...역시 감사합니다.

 

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