그룹 함수(ROLLUP·CUBE·GROUPING SETS) 는 GROUP BY 에 소계·총계 행을 자동으로 추가 해 주는 확장입니다. 시험은 어떤 조합의 소계가 나오는지(조합 수) 와 소계 행의 NULL 처리 를 묻습니다.
이 단원, 시험에서 어디에 나오나
- 제2과목 「SQL 기본 및 활용」 단원입니다.
- ROLLUP·CUBE가 만드는 그룹 조합 수 와 실행 결과(소계·총계 행) 예측이 핵심입니다.
① ROLLUP vs CUBE — 조합 수
그림 1. 인자 2개 기준 ROLLUP=3개(계층적), CUBE=4개(모든 조합). (자작 도식)
| 함수 | 만드는 조합 | 인자 n개일 때 |
|---|---|---|
| ROLLUP(A,B) | (A,B) · (A) · () | n + 1 개 |
| CUBE(A,B) | (A,B) · (A) · (B) · () | 2ⁿ 개 |
| GROUPING SETS | 명시한 조합만 | 지정한 개수 |
- ROLLUP 은 계층적 이라 (B) 단독 소계가 없습니다.
- CUBE 는 모든 조합(정육면체처럼)이라 (B) 소계까지 나옵니다.
② 실행 결과 — 소계·총계 행의 NULL
그림 2. 소계·총계 행의 그룹 컬럼은 NULL로 나옵니다. GROUPING()으로 실제 NULL과 구분합니다. (자작 도식)
- 소계·총계 행에서는 그룹 컬럼 값이 NULL 로 채워집니다.
- 이 NULL이 소계 때문인지, 원래 데이터의 NULL인지 구분하려면
GROUPING()을 씁니다.GROUPING(부서) = 1→ 소계/총계 행,= 0→ 실제 값 행.
자주 틀리는 함정
- 조합 수 계산 — 인자 n개면 ROLLUP은 n+1, CUBE는 2ⁿ. (예: 2개 → 3 vs 4)
- ROLLUP에 (B) 소계 있음 이라고 오인 — ROLLUP은 계층적이라 (B) 단독은 없음.
- 소계 NULL을 실제 NULL로 착각 — GROUPING()으로 구분.
한 장 정리 (암기 카드)
- ROLLUP(n개) = n+1 조합(계층적, (B) 단독 없음).
- CUBE(n개) = 2ⁿ 조합(모든 조합).
- GROUPING SETS = 명시한 조합만.
- 소계·총계 행의 그룹 컬럼 = NULL, GROUPING()=1 로 판별.
참고 출처
- 시험 과목·출제기준: 한국데이터산업진흥원(KDATA) 데이터자격검정 (2026년 7월 확인)
- ROLLUP·CUBE·GROUPING 동작은 ANSI SQL·오라클 표준에 근거하며, 본문 설명·예시·도식은 자작입니다.