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


반응형