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 함수

개요

구문

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;