SQL, Rollup 과 Cube 차이

이규훈·2024년 3월 2일
0

SQL ROLLUP과 CUBE의 차이점: 심층 분석 및 실제 예시

개요

SQL에서 ROLLUP과 CUBE는 데이터 그룹화 후 소계와 총계를 계산하는 데 사용되는 강력한 기능입니다. 하지만 두 기능은 서로 다른 방식으로 작동하며 결과에도 차이가 있습니다. 이 글에서는 ROLLUP과 CUBE의 차이점을 심층적으로 분석하고 이해하기 쉬운 예시를 통해 설명합니다.

1. 개념 및 작동 방식

1.1 ROLLUP

  • 개념: ROLLUP은 그룹핑 레벨별 소계와 총계를 제공합니다. 마치 계층 구조를 따라 올라가면서 각 레벨의 합계를 계산하는 것과 같습니다.
  • 작동 방식:
    • GROUP BY 절에 지정된 컬럼들을 기준으로 그룹화합니다.
    • 각 그룹에 대해 집계 함수를 적용하여 소계를 계산합니다.
    • 모든 그룹을 포함하는 '전체' 행을 추가하여 총계를 계산합니다.

1.2 CUBE

  • 개념: CUBE는 모든 가능한 조합의 소계와 총계를 제공합니다. 마치 데이터의 모든 측면을 다각적으로 분석하는 것과 같습니다.
  • 작동 방식:
    • ROLLUP과 동일하게 그룹화 및 소계 계산을 수행합니다.
    • 그룹핑 컬럼들의 모든 조합에 대해 추가적인 소계를 계산합니다.
    • '전체' 행을 포함하여 모든 조합의 총계를 계산합니다.

2. 결과 비교: 중복, NULL, 총계

2.1 중복 행

  • ROLLUP:
    • 상위 레벨에 속하는 하위 레벨 결과가 중복됩니다.
    • 예를 들어, '국가'와 '도시'를 기준으로 그룹화하면 '전체' 행, '국가'별 행, 그리고 '도시'별 행이 모두 나타나게 됩니다.
  • CUBE:
    • 모든 조합을 포함하기 때문에 ROLLUP보다 더 많은 중복 행이 발생합니다.

2.2 NULL 값 처리

  • ROLLUP:
    • NULL 값은 소계 계산에서 제외됩니다.
  • CUBE:
    • NULL 값은 소계 계산에 포함됩니다.

2.3 총계 위치

  • ROLLUP:
    • 총계는 항상 '전체' 행에 나타납니다.
  • CUBE:
    • '전체' 행뿐만 아니라 모든 그룹 레벨에 총계가 나타납니다.

3. 실제 예시: 데이터 분석 시나리오

다음은 ROLLUP과 CUBE의 차이점을 보여주는 실제 예시입니다.

예시: 온라인 상점 판매 데이터 분석

  • 데이터:
    • 주문 ID, 고객 ID, 제품 ID, 판매 날짜, 판매 금액
  • 분석 목표:
    • 지역, 제품 카테고리, 판매 날짜별 판매 금액 분석

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-031,000,000
한국의류2024-03500,000
미국전자제품2024-03800,000
............
전체전체전체2,300,000

분석:

  • 각 국가, 제품 카테고리, 월별 판매 금액을 확인할 수 있습니다.
  • '전체' 행을 통해 전체 판매 금액을 파악할 수 있습니다.

3.2 CUBE 예시

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-031,000,000
한국의류2024-03500,000
미국전자제품2024-03800,000
............
한국전자제품전체1,500,000
한국전체2024-031,500,000
한국전체전체2,000,000
전체전자제품2024-031,800,000
전체의류2024-03500,000
전체전체전체2,300,000

분석:

  • 국가, 제품 카테고리, 월의 모든 조합에 대한 판매 금액을 확인할 수 있습니다.
  • '전체' 행을 통해 각 조합별 총계뿐만 아니라 전체 판매 금액도 파악할 수 있습니다.

4. ROLLUP과 CUBE 선택 가이드

  • ROLLUP:
    • 특정 그룹 레벨의 합계를 확인하고 싶을 때
    • 데이터의 계층 구조를 분석하고 싶을 때
    • 결과 행 수를 줄이고 싶을 때
  • CUBE:
    • 모든 가능한 조합의 합계를 확인하고 싶을 때
    • 데이터의 다차원 분석을 하고 싶을 때
    • 데이터의 모든 측면을 파악하고 싶을 때

5. 추가 정보 및 고려 사항

  • ROLLUP과 CUBE는 함께 사용할 수 있습니다.
  • GROUPING 함수를 사용하면 각 행의 그룹핑 레벨을 확인할 수 있습니다.
  • CUBE는 데이터 량이 많을 경우 결과 행 수가 급증하여 성능 저하를 초래할 수 있습니다.

6. 참고자료

7. 결론

SQL ROLLUP과 CUBE는 데이터 그룹화 후 소계와 총계를 계산하는 데 사용되는 강력한 기능입니다. 두 기능의 차이점을 이해하고 적절하게 사용하면 데이터 분석의 효율성을 높일 수 있습니다.

profile
개발취준생

0개의 댓글