2.1 Rollup

출처 http://www.gurubee.net/lecture/2678

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) : 롤업의 항목을 오른쪽부터 하나씩 차례로 없애가며 그룹바이한 결과의 합집합

참고링크

SQL 전문가 가이드 – 제5절 그룹 함수(GROUP FUNCTION)


답글 남기기 0

Your email address will not be published. Required fields are marked *