DataBase/Oracle

오라클 그룹함수 rollup,cube

천본앵 2008. 9. 23. 13:42

ROLLUP, CUBE

sub total을 구할 때 사용한다.

부서 직무

A

B

C

10

 

 

 

 

20

 

 

 

 

30

 

 

 

 

 

 

 

 


위 표와같이 각 항목별로 data가 있을 때 색칠한 부분 즉 10번 부서의 모든 직무들의 급여의 합, 20번부서의... 30번부서의...
그리고 전체 부서내 모든 직무들의 급여의 합을 구할 필요가 있을 때 사용한다.
표 중에서 색칠한 부분을 구하고자 할 때 ROLLUP을 사용한다.


부서 직무

A

B

C

10

 

 

 

 

20

 

 

 

 

30

 

 

 

 

 

 

 

 


이번에는 각 부서별 모든 직무들의 급여의 합도 필요하고, 부서에 상관없이 모든 부서내의 각 직무별 급여의 합이 필요할 때 사용한다.
표 중에서 색칠한 부분을 구하고자 할 때 CUBE를 사용한다.


SELECT dept_id, title, sum(salary)
FROM s_emp
GROUP BY ROLLUP(dept_id, title);


SELECT dept_id, title, sum(salary)
FROM s_emp
GROUP BY CUBE(dept_id, title);

위의 query문을 실행할 때 (dept_id, title)을 (title, dept_id)이렇게 하면 물론 표에서 행과 열이 바뀌기 때문에 계산의 기준이 되는 column이 다르게 되므로 주의 한다.
(행, 열)의 순으로 한다.

출처 : http://shoutrock.egloos.com/4083707