2.1. Rollup
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) : 롤업의 항목을 오른쪽부터 하나씩 차례로 없애가며 그룹바이한 결과의 합집합
'Database > Oracle SQL2' 카테고리의 다른 글
2.5. GROUPING SETS (0) | 2019.04.24 |
---|---|
2.4. Cube (0) | 2019.04.24 |
2.3. Rollup 결과 행 구분 (0) | 2019.04.24 |
2.2. Rollup 예제 (0) | 2019.04.24 |
1.6. KEEP, LISTAGG (0) | 2019.04.24 |
1.5. 기타 함수 (0) | 2019.04.24 |
1.4. 윈도우 함수 (0) | 2019.04.24 |
1.3. 집계함수 (0) | 2019.04.24 |