ROLLUP과 CUBE함수

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

SQL

목록 보기
1/3

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

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

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


🔹 ROLLUP과 CUBE의 개념

함수특징주 사용처
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별 총 매출 (product와 month 값이 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개의 댓글