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이 다르게 되므로 주의 한다.
(행, 열)의 순으로 한다.