ROLLUP 함수란?

SQL 공부

목록 보기
8/11

ROLLUP 함수란?

ROLLUP은 SQL의 GROUP BY 확장 기능으로, 계층적인 집계 결과를 자동으로 생성하는 데 사용됩니다.
일반적인 GROUP BY는 특정 그룹별로만 집계를 하지만, ROLLUP을 사용하면 중간 합계와 총합까지 자동으로 계산할 수 있습니다.


1. ROLLUP 기본 문법

SELECT 컬럼1, 컬럼2, 집계함수
FROM 테이블
GROUP BY ROLLUP(컬럼1, 컬럼2);

🔹 ROLLUP(컬럼1, 컬럼2) → 계층적인 그룹핑 및 합계를 자동 생성
🔹 마지막에 NULL 값이 있는 행이 나오면 그 부분은 중간 합계 또는 총합을 의미


2. ROLLUP 사용 예제

📌 예제 테이블 (sales)

regionproductsales_amount
AX100
AY150
BX200
BY250

ROLLUP을 사용한 쿼리

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

결과:
| region | product | total_sales |
|--------|--------|------------|
| A | X | 100 |
| A | Y | 150 |
| A | NULL | 250 (A지역 총합) |
| B | X | 200 |
| B | Y | 250 |
| B | NULL | 450 (B지역 총합) |
| NULL | NULL | 700 (전체 총합) |

✔️ 동작 방식
1. (region, product) 별로 SUM(sales_amount) 계산
2. 각 지역(region)의 총합 추가 (region별 NULL 등장)
3. 전체 총합 추가 (최상단 NULL, NULL 등장)


3. ROLLUP vs GROUP BY vs CUBE

기능GROUP BYROLLUPCUBE
기본 그룹별 집계
중간 합계 계산
전체 총합 계산
모든 조합 집계

CUBE와의 차이

  • ROLLUP(a, b)(a, b), (a, NULL), (NULL, NULL) (계층적 집계)
  • CUBE(a, b)(a, b), (a, NULL), (NULL, b), (NULL, NULL) (모든 조합)

4. ROLLUP 실전 예제

✅ 연도별, 분기별 매출 분석

SELECT year, quarter, SUM(sales) AS total_sales
FROM sales_data
GROUP BY ROLLUP(year, quarter);

📌 출력 결과:
| year | quarter | total_sales |
|------|---------|------------|
| 2023 | Q1 | 50000 |
| 2023 | Q2 | 60000 |
| 2023 | NULL | 110000 (2023년 총합) |
| 2024 | Q1 | 70000 |
| 2024 | Q2 | 80000 |
| 2024 | NULL | 150000 (2024년 총합) |
| NULL | NULL | 260000 (전체 총합) |

연도별, 분기별 매출을 보고 싶은데, 연도별 합계와 전체 합계까지 자동 생성


5. 정리

ROLLUP의 핵심 기능
그룹별 집계를 생성
중간 합계를 자동 계산
전체 합계를 자동 추가
계층적 데이터를 다룰 때 유용

📌 ROLLUP을 사용하면 GROUP BY로 여러 개의 쿼리를 작성해야 할 일을 한 번에 해결 가능! 🚀

profile
AI 답변 글을 주로 올립니다.

0개의 댓글