1. ROLLUP 함수
개요
- 지정된 그룹화 열들에 대해 다양한 소계 및 총계를 생성
- 계층적 데이터 분석에 유용
- 열 순서가 중요함 (왼쪽에서 오른쪽으로 계층 구조 형성)
구문
GROUP BY ROLLUP(column1, column2, ...)
예제 1: 부서별 급여 집계
-- 부서별 직원수와 급여 합계 (소계, 총계 포함)
SELECT
NVL(TO_CHAR(department_id), '총계') as dept_id,
COUNT(*) as emp_count,
SUM(salary) as total_salary
FROM employees
GROUP BY ROLLUP(department_id)
ORDER BY department_id;
예제 2: 직무별, 부서별 직원 수 집계
-- 부서와 직무별 직원수 (중간 소계, 총계 포함)
SELECT
department_id, job_id,
COUNT(*) as emp_count
FROM employees
GROUP BY ROLLUP(department_id,job_id)
ORDER BY department_id, job_id;
2. CUBE 함수
개요
- 지정된 그룹화 열들의 모든 가능한 조합에 대한 소계 생성
- ROLLUP보다 더 많은 소계 정보 제공
- 다차원 분석에 유용
구문
GROUP BY CUBE(column1, column2, ...)
예제 1: 부서별 급여 통계
-- 부서별 직원수와 평균급여 (모든 조합)
SELECT
NVL(TO_CHAR(department_id), '전체') as dept_id,
COUNT(*) as emp_count,
ROUND(AVG(salary)) as avg_salary
FROM employees
GROUP BY CUBE(department_id)
ORDER BY department_id;