ROLLUP과 CUBE함수

안석우(문과대학 철학)·2025년 2월 18일
0

SQL

목록 보기
1/3

📌 ROLLUP과 CUBE 함수의 차이와 활용법

SQL에서 ROLLUPCUBE그룹별로 다양한 수준의 집계 데이터를 생성할 때 유용한 함수다.
둘 다 GROUP BY 절과 함께 사용되며, 계층적인 집계를 만들 수 있다.
하지만 두 함수의 동작 방식에는 차이가 있다.

이번 글에서는 ROLLUPCUBE의 개념을 예제와 함께 쉽게 설명해보겠다.


🔹 ROLLUPCUBE의 개념

함수특징주 사용처
ROLLUP계층적인 집계 (위에서 아래로 단계별)매출 분석, 분기별 집계
CUBE가능한 모든 조합을 집계다차원 분석 (OLAP)

ROLLUP이란?

  • 위에서 아래로 계층적인 집계 값을 생성한다.
  • GROUP BY에서 지정한 가장 마지막 컬럼부터 단계적으로 그룹을 제거하면서 집계를 수행한다.

CUBE란?

  • 가능한 모든 조합의 그룹을 생성하여 집계를 수행한다.
  • ROLLUP보다 더 많은 집계 데이터를 생성한다.
  • 다차원 분석(OLAP)에서 많이 사용된다.

🔹 ROLLUP 예제

📌 예제 데이터 (sales 테이블)

regionproductmonthsales
EastAJan100
EastAFeb200
EastBJan150
EastBFeb250
WestAJan120
WestAFeb220
WestBJan170
WestBFeb270

이제 region, product, month별로 매출을 집계하려고 한다.

SELECT region, product, month, SUM(sales) AS total_sales
FROM sales
GROUP BY ROLLUP(region, product, month);

🔹 결과

regionproductmonthtotal_sales
EastAJan100
EastAFeb200
EastANULL300
EastBJan150
EastBFeb250
EastBNULL400
EastNULLNULL700
WestAJan120
WestAFeb220
WestANULL340
WestBJan170
WestBFeb270
WestBNULL440
WestNULLNULL780
NULLNULLNULL1480

ROLLUP(region, product, month)의 동작 방식

1️⃣ region, product, month별 총 매출
2️⃣ region, product별 총 매출 (month 값이 NULL)
3️⃣ region별 총 매출 (productmonth 값이 NULL)
4️⃣ 전체 총합 (region, product, month 모두 NULL)

특징: ROLLUP계층적인 집계를 생성하며, 마지막 단계에서 전체 합계를 구한다.


🔹 CUBE 예제

같은 데이터를 CUBE로 그룹화하면 어떻게 될까?

SELECT region, product, month, SUM(sales) AS total_sales
FROM sales
GROUP BY CUBE(region, product, month);

🔹 결과

regionproductmonthtotal_sales
EastAJan100
EastAFeb200
EastANULL300
EastBJan150
EastBFeb250
EastBNULL400
EastNULLNULL700
WestAJan120
WestAFeb220
WestANULL340
WestBJan170
WestBFeb270
WestBNULL440
WestNULLNULL780
NULLAJan220
NULLAFeb420
NULLANULL640
NULLBJan320
NULLBFeb520
NULLBNULL840
NULLNULLJan420
NULLNULLFeb740
NULLNULLNULL1480

CUBE(region, product, month)의 동작 방식

1️⃣ region, product, month별 총 매출
2️⃣ region, product별 총 매출
3️⃣ region, month별 총 매출
4️⃣ product, month별 총 매출
5️⃣ region별 총 매출
6️⃣ product별 총 매출
7️⃣ month별 총 매출
8️⃣ 전체 총합

특징: CUBE모든 가능한 조합을 만들어서 집계한다.


🔹 ROLLUP vs CUBE 차이 비교

ROLLUP(region, product, month)CUBE(region, product, month)
region, product, month 그룹화
region, product별 총합
region, month별 총합
product, month별 총합
region별 총합
product별 총합
month별 총합
전체 총합

ROLLUP계층적인 집계만 포함하지만,
CUBE모든 조합을 고려한 다차원 집계를 수행한다.


🔹 언제 사용하면 좋을까?

ROLLUP을 사용할 때

  • 계층적 데이터 분석이 필요할 때
  • 예) 년 → 분기 → 월 단위로 매출 분석할 때

CUBE를 사용할 때

  • 다차원 데이터 분석(OLAP)이 필요할 때
  • 예) 제품별 / 지역별 / 전체 매출을 한 번에 분석하고 싶을 때

🔹 정리

ROLLUP: 계층적인 집계를 생성 (특정 기준으로 단계적으로 그룹화)
CUBE: 가능한 모든 조합의 집계를 생성 (더 많은 데이터 제공)
ROLLUP은 한 방향의 그룹화, CUBE는 모든 방향의 그룹화

데이터 분석 목적에 따라 적절한 함수를 사용하면 더 효과적인 SQL 쿼리를 작성할 수 있다! 🚀

0개의 댓글