Oracle Advanced SQL 강좌
Rollup 1 4 99,999+

by 마농 ROLLUP UNION ALL CUBE [2014.01.15]


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

참고링크

- 강좌 URL : http://www.gurubee.net/lecture/2678

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by 제로엔나 [2015.02.27 04:49:28]

- Rollup : 단계별 소계
- Cube : 모든 경우의 수에 대한 소계

말로 정리하려니 조금 헷갈렸었는데 이걸보니 좀 명확해졌네요.
감사합니다 ㅎㅎ


by 므흣 [2016.05.02 21:49:19]

Rollup 간단하면서 아주좋은 함수군요... 굿~~


by 오상민 [2018.02.02 11:17:26]

안녕하세요 질문이 있어 남겨봅니다 ROLLUP을 사용하게되면 SQL성능상에 문제가 생기지는 않는지 궁금합니다 UNION과 비교했을 때 어떠한지요


by 마농 [2018.02.02 13:26:38]

union all 에 비해 rollup 이 좋죠.
1. 구문이 간결해서 보기에도 좋고
2. 테이블도 1번만 읽어서 성능도 좋고

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입