서론
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;
'DB > Oracle' 카테고리의 다른 글
[Oracle] LAG( )함수 - 이전 행 값 가져오기, LEAD( )함수 - 이후 행 값 가져오기 (0) | 2021.08.09 |
---|---|
[Oracle] 분석함수, 윈도함수 - GROUPING SETS ( ), LISTAGG( ), PIVOT( ), UNPIVOT( ) 함수 (0) | 2021.08.03 |
[Oracle] 분석함수, 윈도함수 - ROLLUP (기준별 소계 요약) (0) | 2021.08.03 |
[Oracle] SQL 복수행 함수 (그룹 함수) - GROUP BY, HAVING, ROLLUP (0) | 2021.07.27 |
[Oracle] SQL 복수행 함수(그룹 함수) (0) | 2021.07.27 |