안녕하세요.
현재 오라클 10g를 사용하고 있습니다.
아래에 내용이 잘못된 질의를 올려 수정하여 다시 한번 질의드립니다.
아래와 같이 제품별(CODE), 일자별(DT), 입고수량(IN), 판매수량(SELL)에 대한
테이블이 있다고 가정했을때에 해당 제품별 입고대비 판매율이 50%에
도달했을 시점의 일자(DT)를 구하고자 합니다.
이때, 만약 특정 제품의 최종누적입고대비 최종판매율이 50% 이상인 경우에는 50%에
도달했을 당시의 시점일자를 구하면 되며, 특정제품의 최종누적입고대비 최종판매율이 50%이하이면
최종 일자를 구하면 됩니다.
단, 테이블내의 제품에 대한 입고, 판매수량은 일자누적데이타가 아니라
일자별에 대한 수불내용입니다.
TEMP1(일자별 수불테이블)
==============================
CODE DT IN SELL
==============================
A 20120105 5 2 ====> 판매율 = 25%
A 20120107 3 2 ====> 판매율 = 50%
A 20120105 0 2 ====> 판매율 = 75%
B 20120101 4 1 ====> 판매율 = 10%
B 20120105 6 0 ====> 판매율 = 10%
==============================
위의 내용과 같은 테이블의 데이타를 아래와 같은 결과를 얻고자 합니다.
결과화면
=======================================
CODE DT
=======================================
A 20120107
B 20120105
=======================================
다시한번 관심 부탁드립니다.. 감사합니다..^^
-- 해당 일자 기준 누적 입고액을 기준으로 할지? -- 최종 일자 기준 누적 입고액을 기준으로 할지? SELECT code , NVL(MIN(CASE WHEN sell / in_1 >= 0.5 THEN dt END), MAX(dt)) dt_1 , NVL(MIN(CASE WHEN sell / in_2 >= 0.5 THEN dt END), MAX(dt)) dt_2 FROM (SELECT code, dt , SUM(in_v) OVER(PARTITION BY code) in_1 , SUM(in_v) OVER(PARTITION BY code ORDER BY dt) in_2 , SUM(sell) OVER(PARTITION BY code ORDER BY dt) sell FROM t ) GROUP BY code ORDER BY code ;