Oracle/SQL Fundamentals I

9일차 문제 누적합 구하기

Bohemian life 2012. 4. 16. 15:10


cf.) Analytic function(=Window function)을 사용하면 쉽게 구할 수 있습니다.


drop table test purge;


create table test

as

select empno, sal

from emp

where rownum <= 3;


- 원하는 결과는 아래와 같습니다.  


    EMPNO        SAL   누적합

---------- ----------  -------   

     7369        800      800

     7499       1600     2400

     7521       1250     3650



  select * from test;



select t1.empno, t1.sal, t2.empno, t2.sal

from test t1 join test t2

on (t1.empno >= t2.empno)

order by 1;


     ↓ ↓ ↓


select t1.empno, t1.sal, sum(t2.sal) as 누적합

from test t1 join test t2

on (t1.empno >= t2.empno)

group by t1.empno, t1.sal

order by t1.empno;



 

  * Analytic function (Window function) 을 이용한 해법

==> http://goo.gl/iMTAz


select empno, sal

    , sum(sal) over (order by empno) as 누적합

from test;