SQL에서 ROLLUP과 CUBE는 데이터 그룹화 후 소계와 총계를 계산하는 데 사용되는 강력한 기능입니다. 하지만 두 기능은 서로 다른 방식으로 작동하며 결과에도 차이가 있습니다. 이 글에서는 ROLLUP과 CUBE의 차이점을 심층적으로 분석하고 이해하기 쉬운 예시를 통해 설명합니다.
1.1 ROLLUP
1.2 CUBE
2.1 중복 행
2.2 NULL 값 처리
2.3 총계 위치
다음은 ROLLUP과 CUBE의 차이점을 보여주는 실제 예시입니다.
예시: 온라인 상점 판매 데이터 분석
3.1 ROLLUP 예시
SELECT
country,
product_category,
DATE_FORMAT(sale_date, '%Y-%m') AS month,
SUM(sale_amount) AS total_sales
FROM orders
GROUP BY ROLLUP(country, product_category, month)
ORDER BY 1, 2, 3;
결과:
| 국가 | 제품 카테고리 | 월 | 총 판매 금액 |
|---|---|---|---|
| 한국 | 전자제품 | 2024-03 | 1,000,000 |
| 한국 | 의류 | 2024-03 | 500,000 |
| 미국 | 전자제품 | 2024-03 | 800,000 |
| ... | ... | ... | ... |
| 전체 | 전체 | 전체 | 2,300,000 |
분석:
SELECT
country,
product_category,
DATE_FORMAT(sale_date, '%Y-%m') AS month,
SUM(sale_amount) AS total_sales
FROM orders
GROUP BY CUBE(country, product_category, month)
ORDER BY 1, 2, 3;
결과:
| 국가 | 제품 카테고리 | 월 | 총 판매 금액 |
|---|---|---|---|
| 한국 | 전자제품 | 2024-03 | 1,000,000 |
| 한국 | 의류 | 2024-03 | 500,000 |
| 미국 | 전자제품 | 2024-03 | 800,000 |
| ... | ... | ... | ... |
| 한국 | 전자제품 | 전체 | 1,500,000 |
| 한국 | 전체 | 2024-03 | 1,500,000 |
| 한국 | 전체 | 전체 | 2,000,000 |
| 전체 | 전자제품 | 2024-03 | 1,800,000 |
| 전체 | 의류 | 2024-03 | 500,000 |
| 전체 | 전체 | 전체 | 2,300,000 |
분석:
4. ROLLUP과 CUBE 선택 가이드
5. 추가 정보 및 고려 사항
6. 참고자료
7. 결론
SQL ROLLUP과 CUBE는 데이터 그룹화 후 소계와 총계를 계산하는 데 사용되는 강력한 기능입니다. 두 기능의 차이점을 이해하고 적절하게 사용하면 데이터 분석의 효율성을 높일 수 있습니다.