Rollup과 Cube는?
- – GROUP BY 구문의 결과에 소계 및 합계 정보를 추가로 나타내 주는 함수
- – 복잡한 과정 없이 간단한 구문만으로 소계 정보를 쉽게 구할 수 있다.
- – Rollup : 단계별 소계
- – Cube : 모든 경우의 수에 대한 소계
Rollup 기본예제
Rollup 예제 1
아래는 부서별 급여합계와 전체 합계를 조회하는 예제이다.
SELECT deptno , SUM(sal) s_sal FROM emp GROUP BY ROLLUP(deptno) ; -- ROLLUP 연산으로 29025 출력 DEPTNO S_SAL ------- ---------- 10 8750 20 10875 30 9400 29025
아래는 UNION ALL을 이용하여 위 ROLLUP 예제와 동일한 결과를 조회하는 예제이다.
SELECT deptno , SUM(sal) s_sal FROM emp GROUP BY deptno UNION ALL SELECT NULL deptno , SUM(sal) s_sal FROM emp ; DEPTNO S_SAL ------- ---------- 30 9400 20 10875 10 8750 29025
Rollup 예제 2
아래는 부서별 사원의 급여와 소계, 그리고 전체 합계(총계)를 조회하는 예제이다
SELECT deptno , empno , SUM(sal) s_sal FROM emp GROUP BY ROLLUP (deptno, empno) ; DEPTNO EMPNO S_SAL ------- ---------- ---------- 10 7782 2450 10 7839 5000 10 7934 1300 10 8750 20 7369 800 20 7566 2975 20 7788 3000 20 7876 1100 20 7902 3000 20 10875 30 7900 950 30 7499 1600 30 7521 1250 30 7654 1250 30 7698 2850 30 7844 1500 30 9400 29025
GROUP BY ROLLUP (DEPTNO, EMPNO) : 롤업의 항목을 오른쪽부터 하나씩 차례로 없애가며 그룹바이한 결과의 합집합