SQL 기본 및 활용

20. 그룹 함수 — SQLD, ROLLUP·CUBE·GROUPING SETS 조합과 소계

CBT 전자문제집 편집팀
#SQLD#그룹함수#ROLLUP#CUBE#GROUPING SETS

그룹 함수(ROLLUP·CUBE·GROUPING SETS)GROUP BY소계·총계 행을 자동으로 추가 해 주는 확장입니다. 시험은 어떤 조합의 소계가 나오는지(조합 수)소계 행의 NULL 처리 를 묻습니다.

이 단원, 시험에서 어디에 나오나

  • 제2과목 「SQL 기본 및 활용」 단원입니다.
  • ROLLUP·CUBE가 만드는 그룹 조합 수실행 결과(소계·총계 행) 예측이 핵심입니다.

① ROLLUP vs CUBE — 조합 수

ROLLUP(A,B)는 3개 그룹 조합, CUBE(A,B)는 4개 그룹 조합을 만든다는 도식

그림 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

ROLLUP 결과 도식. 부서별 행 + 총계 행이 추가되고 총계 행의 부서 컬럼은 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 로 판별.

참고 출처

CBT 전자문제집 편집팀

자격증 개념과 기출 유형을 쉽게 정리합니다.

관련 글