Database/Oracle
[오라클] 그룹의 누적 나눗셈
데브포유
2013. 11. 26. 17:22
반응형
첫행의 값을 순차적으로 다음행의 값으로 나누는 예제...
-----------------
SAMPLE
-----------------
SELECT no
,no2
,first_value
,(cur_value / first_value)
,ROUND(case WHEN no = 1 THEN NULL
else
first_value / (cur_value / first_value)
end
, 5) div_value
FROM
(
SELECT no2
,no
,first_value(no2) over() first_value
,EXP( SUM(LN(no2)) over( ORDER BY no rows BETWEEN unbounded preceding AND CURRENT row) ) cur_value
FROM
(
SELECT no, case WHEN no = 1 THEN 1000
ELSE no
END no2
FROM COPY_T
WHERE rownum <= 5
)
);
첫행의 1000 값을 다음행의 2, 3, 4, 5 값으로 차례대로 나눈 값.
------
결과
------
NO | NO2 | FIRST_VALUE | (CUR_VALUE/FIRST_VALUE) | DIV_VALUE |
1 | 1000 | 1000 | 1 | |
2 | 2 | 1000 | 2 | 500 |
3 | 3 | 1000 | 6 | 166.66667 |
4 | 4 | 1000 | 24 | 41.66667 |
5 | 5 | 1000 | 120 | 8.33333 |
반응형