BOARD / GROUP BY 확장 / 2026-04-13

GROUP BY 확장 정리

기본 GROUP BY가 한 가지 집계 수준만 보여준다면, 확장 문법은 소계와 총계, 여러 조합 집계를 한 번에 계산하게 해줍니다. SQLD에서 자주 보는 고급 집계 포인트이기도 합니다.

게시판 목록BLACK SQL 실습SQLD 문제은행

ROLLUP은 계층형 소계, CUBE는 모든 조합, GROUPING SETS는 원하는 조합만 선택하는 방식으로 이해하면 정리가 쉽습니다. GROUPING 함수는 어떤 행이 소계/총계인지 판별할 때 함께 사용합니다.

핵심 체크포인트

  • ROLLUP은 순서가 중요하고, CUBE는 가능한 조합을 모두 만듭니다.
  • GROUPING SETS는 필요한 조합만 골라 계산할 수 있습니다.
  • GROUPING 함수로 소계 행인지 일반 행인지 구분할 수 있습니다.

주제별 설명

ROLLUP

왼쪽에서 오른쪽으로 점차 상위 집계로 올라가며 소계와 총계를 생성합니다.

  • 컬럼 순서가 바뀌면 소계 구조도 달라집니다.
  • 소계와 총계를 한 번에 만들 때 가장 직관적인 문법입니다.
SELECT grade_code,
       city,
       COUNT(*) AS member_cnt
FROM members
GROUP BY ROLLUP (grade_code, city);

CUBE

지정한 컬럼들의 가능한 모든 집계 조합을 계산합니다.

  • 결과 행이 많이 늘어날 수 있어 구조를 예측하며 써야 합니다.
  • 다차원 분석 느낌으로 생각하면 이해가 쉽습니다.

GROUPING SETS

필요한 집계 조합만 직접 지정해 계산하는 문법입니다.

  • ROLLUP이나 CUBE보다 결과를 더 세밀하게 통제할 수 있습니다.
  • 원하는 소계만 골라 만들 수 있어 실무에서도 유용합니다.

GROUPING 함수

현재 행이 원본 그룹 행인지, 소계/총계 행인지 구분하는 데 쓰는 함수입니다.

  • NULL이 실제 데이터인지, 집계로 생긴 NULL인지 판별하는 데 도움됩니다.
  • 보고서형 결과를 정리할 때 매우 유용합니다.

실습 흐름 추천

  1. 기본 GROUP BY 결과를 먼저 확인합니다.
  2. 같은 쿼리를 ROLLUP으로 바꿔 소계와 총계가 추가되는 흐름을 확인합니다.
  3. GROUPING SETS로 필요한 집계만 남기며 결과를 비교합니다.
바로 이어서 해보려면

이론만 읽지 말고 바로 blacksql.sqld.kr에서 실행해보고, 문제 풀이 감각은 www.sqld.kr에서 이어가면 학습 속도가 훨씬 빨라집니다.

자주 묻는 질문

ROLLUP과 CUBE 중 무엇이 더 많이 쓰이나요?

보고서형 소계와 총계가 목적이라면 ROLLUP이 더 직관적이고 자주 쓰입니다.

소계 행의 NULL은 실제 NULL과 어떻게 구분하나요?

GROUPING 함수나 GROUPING_ID를 함께 사용하면 소계/총계 행인지 구분할 수 있습니다.