본문 바로가기

DB/Oracle

[Oracle] 분석함수, 윈도함수 - CUBE (소계와 전체 합계 출력)

서론

CUBE( ) : 각 소계와 전체 총계 출력

 

- 전체 합계까지 보여주기에 집계 컬럼들이 가질 수 있는 모든 경우에 대해 소계(소그룹)을 생성해야 하기에 ROLLUP에 비해 시스템 리소스를 더 사용함

 

- 컬럼이 N개 일 때, 2^N승의 소계(소그룹) 생성

 

- 모든 경우에 대한 소계를 구하기에 순서가 바뀌어도 데이터는 같음 ( ROLLUP은 순서 중요 )

 

- 예제. 부서별 평균 급여와 사원 수, 직급별 평균 급여와 사원 수, 부서와 직급별 평균 급여와 사원 수, 전체 평균 월 급여와 사원 수를 구하라.

 

 

SELECT deptno, job, ROUND( AVG(NVL(sal, 0)), 1) "avg_sal", COUNT(*) "cnt_emp"

FROM emp

GROUP BY CUBE(deptno, job)

ORDER BY deptno, job;