나의 잡다한 노트 및 메모

ROLLUP 이란? 본문

DB/SQL

ROLLUP 이란?

peanutwalnut 2025. 3. 1. 21:55

ROLLUP은 SQL의 GROUP BY 확장 기능 중 하나로, 집계 결과에 대한 계층적(subtotal) 요약 집계를 자동으로 생성할 수 있게 해줍니다. 이를 통해 여러 수준의 집계 결과(부분 합계와 전체 합계)를 한 번의 쿼리로 구할 수 있습니다.

 

ROLLUP은 GROUP BY를 확장하여 여러 수준의 집계(부분 합계, 총합계 등)를 한 번에 계산할 수 있는 기능

 

1. 기본 개념

  • 목적:
    ROLLUP은 그룹화한 데이터에 대해, 지정한 컬럼들을 기반으로 하위 수준부터 최상위(전체)의 집계 결과를 자동으로 생성합니다.
  • 계층적 집계:
    예를 들어, 부서별, 그리고 부서 내의 직급별 매출 집계를 구하는 경우, ROLLUP을 사용하면 부서별 합계와 전체 합계를 함께 산출할 수 있습니다.

2. ROLLUP 구문

ROLLUP은 GROUP BY 절 내에서 사용되며, 여러 컬럼을 지정할 때 그 순서에 따라 계층 구조가 결정됩니다.

sql
복사
SELECT col1, col2, aggregate_function(col3) FROM table GROUP BY ROLLUP (col1, col2);
  • 동작 방식:
    위 구문은 다음과 같은 단계로 집계를 수행합니다:
    • 첫 번째 단계: col1과 col2의 조합별 집계 (가장 상세한 수준)
    • 두 번째 단계: col1별 집계 (즉, col2를 무시한 합계)
    • 세 번째 단계: 전체 집계 (모든 그룹의 합계)
  • 각 집계 단계에서, 해당 수준의 컬럼은 실제 값이 나오고, 집계 레벨이 올라갈수록 그룹화되지 않은 컬럼에는 NULL 값이 나타납니다.

 

3. 예시

예를 들어, 다음과 같은 판매 데이터를 가진 테이블이 있다고 가정합시다:

region                                                                            product                                    sales

North A 100
North B 150
South A 200
South B 250

아래와 같이 ROLLUP을 사용하면:

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

결과는 다음과 같이 나올 수 있습니다:

region                                                                  product                                                     total_sales

North A 100
North B 150
North NULL 250
South A 200
South B 250
South NULL 450
NULL NULL 700
  • 여기서 NULL은 해당 수준에서 집계가 이루어졌음을 의미합니다.

4. 장점 및 활용

  • 효율성:
    별도의 쿼리를 여러 번 작성할 필요 없이, 하나의 쿼리로 상세 집계와 총합을 모두 산출할 수 있어 코드가 간결해집니다.
  • 보고서 작성:
    보고서나 대시보드에서 부분 합계와 전체 합계를 동시에 제공할 때 유용합니다.

 

5. 주의사항

  • 지원 여부:
    모든 DBMS가 ROLLUP을 지원하는 것은 아니며, 각 시스템에 따라 문법이나 기능이 다소 차이가 있을 수 있습니다.
  • NULL 처리:
    결과에서 NULL 값이 집계 수준을 표시하는데 사용되므로, 이를 해석하거나 표시할 때 주의가 필요합니다.

'DB > SQL' 카테고리의 다른 글

fact 란?  (0) 2025.03.02
Dimension 이란 용어란?  (0) 2025.03.02
DB에서 쓰이는 함수들  (0) 2025.02.22
DB에서 Join의 필요성  (0) 2025.02.06
SQL 쿼리 기본적인 것들 정리 (SELECT, INSERT, UPDATE, DELETE, CREATE, ALTER )  (0) 2025.01.21