반응형

ORACLE ROLLUP, CUBE 예제

 

 

오라클에서 ROLLUP 함수와 CUBE 함수는 그룹함수로 제공되고 있습니다.

 

GROUP BY 절에 사용할 수 있는데 각각 함수의 정의는 다음과 같습니다.

 

 

ROLLUP : 그룹핑 결과에 그룹지은 컬럼의 합계 정보를 추가 조회

CUBE : 그룹으로 지정한 모든 컬럼의 집계 정보를 조회

 

 

비슷한 함수로 사용되지만 결과는 조금 다를 수 있습니다.

 

 

어떻게 다른지 예제로 확인해보도록 하겠습니다.

 

 

#GROUP BY 

 

SELECT T1.JOB
     , T2.DNAME
     , T2.LOC
     , SUM(T1.SAL) AS SALARY
  FROM SCOTT.EMP T1
 INNER JOIN SCOTT.DEPT T2
    ON T1.DEPTNO = T2.DEPTNO
 GROUP BY T1.JOB
        , T2.DNAME
        , T2.LOC

 

 

일반적인 GROUP BY 후 SUM 을 한 결과입니다.

 

 

JOB 과 DNAME 을 그룹핑 후 SAL 값의 합계를 조회한 것을 알 수 있습니다.

 

 

#ROLLUP

 

SELECT T1.JOB
     , T2.DNAME
     , T2.LOC
     , SUM(T1.SAL) AS SALARY
  FROM SCOTT.EMP T1
 INNER JOIN SCOTT.DEPT T2
    ON T1.DEPTNO = T2.DEPTNO
 GROUP BY ROLLUP(T1.JOB, T2.DNAME, T2.LOC)

 

 

GROUP BY 절 안에 ROLLUP 함수를 사용하므로써

 

JOB, DNAME, LOC 별로 SALARY 의 소계값이 조회되고

 

가장 마지막에 JOB과 DNAME과 LOC 의 최종합계값, 즉 ROW DATA 의 전체합계가 조회된 것을 볼 수 있습니다.

 

 

 

 

#CUBE

 

SELECT T1.JOB
     , T2.DNAME
     , T2.LOC
     , SUM(T1.SAL) AS SALARY
  FROM SCOTT.EMP T1
 INNER JOIN SCOTT.DEPT T2
    ON T1.DEPTNO = T2.DEPTNO
 GROUP BY CUBE(T1.JOB, T2.DNAME, T2.LOC)

 

CUBE 함수를 사용하면 ROLLUP 에서 사용했던

 

JOB, DNAME, LOC 별 소계값이 동일하게 조회되며

 

추가적으로 파란색 네모칸으로 조회되는 DNAME(부서)별 SALARY 의 합계값 까지 조회되는 것을 볼 수 있습니다.

 

CUBE 함수를 사용하면 GROUP BY 한 모든 항목에 대해서 집계값을 조회할 수 있는 것을 알 수 있네요

 

조회할 수 있는 모든 조합의 집계 정보를 보고 싶다면 CUBE 함수를 사용할 수 있습니다.

 

너무 많은 정보가 조회되어 데이터를 추출하는데 어려움이 있다면

 

조회조건을 추가하면 좀 더 간략한 정보를 볼 수 있으니 참고하시면 될 것 같습니다.

 

SELECT T1.JOB
     , T2.DNAME
     , T2.LOC
     , SUM(T1.SAL) AS SALARY
  FROM SCOTT.EMP T1
 INNER JOIN SCOTT.DEPT T2
    ON T1.DEPTNO = T2.DEPTNO
 WHERE JOB = 'MANAGER'
 GROUP BY CUBE(T1.JOB, T2.DNAME, T2.LOC)

 

 

 

 

ROLLUP 과 CUBE 의 결정적인 차이점이라고 한다면

 

ROLLUP 은 ROLLUP 함수 안에 들어온 컬럼수 + 1 개의 결과가 조회되며

 

CUBE 는 CUBE 함수 안에 들어온 컬럼수의 2의 n 승개의 결과가 조회되는것이 가장 크다고 볼 수 있네요

 

제가 사용한 예제는 GROUP BY 는 3 + 1 = 3 , CUBE 는 2*2*2 = 8 개의 결과가 나오는 것을 확인할 수 있습니다.

 

ROLLUP 이나 CUBE 함수는 실제로 많이 사용하지는 않지만 이런 기능이 있다 정도로만 알고 있으면 될 것 같습니다.

 

읽어주셔서 감사합니다.

반응형
블로그 이미지

나남나여

일상 제품리뷰와 맛집/여행/사진을 좋아하고 IT 관련 프로그래밍 초급 & 고급 정보를 공유하는 블로그

,