쿼리 수식 도움부탁드려요 0 4 708

by 생택쥐포도 [2018.08.10 17:13:28]


Q_ALL의 각 NAME 수량

예) A의 7월~9월 QTY 수량이 200이고

Q_ALL은 150입니다 그러면 Q_ALL은 A의 수량 7월은 수량을 맞춰서

Q_coplete컬럼(임의생성)이란 이름으로 DATA에 표기될 정보는 7월

이였으면하는데 어떻게 쿼리를 만들어야할지 잘 모르겠습니다.

도움 부탁드려요. 

by 야신 [2018.08.12 15:05:18]
WITH sales(ites_NAME, s_month, s_qty, s_qty_all ) AS --Quantity_ALL
( select 'A', '201807' , 50  ,100 from dual union ALL
  select 'B', '201807' , 50  ,50  from dual union all
  select 'B', '201807' , 50  ,10  from dual union all
  select 'A', '201808' , 50  ,0   from dual union all
  select 'A', '201808' , 50  ,0   from dual union all
  select 'A', '201809' , 50  ,10  from dual union all
  select 'B', '201810' , 50  ,20  from dual union all
  select 'B', '201811' , 50  ,50  from dual union all
  select 'B', '201812' , 50  ,50  from dual)
SELECT ites_name, year_qtr, SUM(s_qty) s_qty, SUM(s_qty_all) s_qty_all
, to_char(to_date(min(s_month),'YYYYMM'),'MM"월"') AS quantity_complete
FROM (
SELECT t.*, to_char(to_date(s_month,'YYYYMM'),'YYYY"0"Q') AS year_qtr
 FROM sales t
 ) t
GROUP BY ites_name,year_qtr
ORDER BY 1,2,3
;
   

 


by 마농 [2018.08.13 08:56:25]

마지막 항목 Quantity_complete 에 대한 설명이 뭔지 도무지 알아들을 수가 없네요.


by 마농 [2018.08.13 11:29:55]

B 에 7월이 두번 나오는데? 혹시 하나는 8월 아닌가요?
둘다 7월이면? B 의 3분기 Quantity_complete 가 7월이 나오는 기준이 어떻게 되나요?
7월이 두건이라 애매한데요?


by 마농 [2018.08.13 13:13:36]
WITH t AS
(
SELECT 'A' name, '201807' month, 50 quantity, 100 quantity_all FROM dual
UNION ALL SELECT 'B', '201807', 50,  50 FROM dual
UNION ALL SELECT 'B', '201808', 50,  10 FROM dual
UNION ALL SELECT 'A', '201808', 50,   0 FROM dual
UNION ALL SELECT 'A', '201809', 50,  10 FROM dual
UNION ALL SELECT 'B', '201810', 50,  20 FROM dual
UNION ALL SELECT 'B', '201811', 50,  50 FROM dual
UNION ALL SELECT 'B', '201812', 50,  50 FROM dual
)
SELECT name
     , quarter
     , SUM(quantity) quantity
     , SUM(quantity_all) quantity_all
     , MAX(quantity_complete) quantity_complete
  FROM (SELECT name
             , quarter
             , quantity
             , quantity_all
             , CASE WHEN SUM(quantity    ) OVER(PARTITION BY name, quarter ORDER BY month)
                      <= SUM(quantity_all) OVER(PARTITION BY name, quarter)
                    THEN month END quantity_complete
          FROM (SELECT name, month, quantity, quantity_all
                     , TO_CHAR(TO_DATE(month, 'yyyymm'), 'yyyy"0"q') quarter
                  FROM t
                )
        )
 GROUP BY name, quarter
 ORDER BY name, quarter
;

 

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