본문 바로가기
카테고리 없음

SQL 그룹 함수: ROLLUP, CUBE, GROUPING SETS 활용

by moment-love 2025. 2. 1.

 

SQL 그룹 함수: ROLLUP, CUBE, GROUPING SETS 활용

SQL의 그룹 함수(Grouping Functions)는 데이터를 다양한 계층으로 요약하여 분석할 때 사용됩니다.

특히 ROLLUP, CUBE, GROUPING SETS는 GROUP BY와 함께 사용되며, 다차원 데이터 요약을 수행하는 데 유용합니다.

이번 글에서는 각 함수의 개념과 사용 방법을 샘플 테이블과 함께 알아보겠습니다.


1. ROLLUP: 계층적 데이터 요약 집계

 

ROLLUP은 GROUP BY와 함께 사용하여 계층적 그룹화 데이터를 자동으로 생성하는 함수입니다.

일반적인 GROUP BY보다 더 높은 수준의 집계를 포함하여 데이터를 요약할 수 있습니다.

 

SELECT Department, Product, SUM(Sales) AS TotalSales  
FROM SalesData  
GROUP BY ROLLUP(Department, Product);

 

이 쿼리는 Department(부서)와 Product(상품) 별로 계층적 집계 결과를 생성합니다. ROLLUP은 그룹별 총합뿐만 아니라 최상위 그룹(전체 합계)까지 자동으로 계산해 줍니다.

 

출력 결과 예시

Department Product TotalSales
Electronics Laptop 5000
Electronics Mobile 3000
Electronics NULL 8000 (부서 합계)
Furniture Chair 2000
Furniture Desk 4000
Furniture NULL 6000 (부서 합계)
NULL NULL 14000 (전체 합계)

 

NULL 값이 있는 행이 추가되면서, 각 그룹의 합계를 자동으로 계산합니다.
ROLLUP(A, B)는 A별 합계, A-B별 합계, 전체 합계를 자동 생성합니다.

 


2. CUBE: 모든 조합에 대한 집계 생성

 

CUBE는 ROLLUP과 유사하지만, 모든 가능한 조합의 그룹화 데이터를 생성합니다.

즉, 각 칼럼 조합에 대해 총합을 계산하므로 ROLLUP보다 더 다양한 결과를 제공합니다.

 

SELECT Department, Product, SUM(Sales) AS TotalSales  
FROM SalesData  
GROUP BY CUBE(Department, Product);

 

이 쿼리는 Department(부서)와 Product(상품)의 모든 가능한 조합에 대해 집계를 생성합니다.

 

출력 결과 예시

 

Department Product TotalSales
Electronics Laptop 5000
Electronics Mobile 3000
Electronics NULL 8000 (부서 합계)
NULL Laptop 5000 (상품 합계)
NULL Mobile 3000 (상품 합계)
Furniture Chair 2000
Furniture Desk 4000
Furniture NULL 6000 (부서 합계)
NULL Chair 2000 (상품 합계)
NULL Desk 4000 (상품 합계)
NULL NULL 14000 (전체 합계)

 

ROLLUP과 달리, CUBE(A, B)는 A별 합계, B별 합계, A-B별 합계, 전체 합계까지 생성합니다.
모든 칼럼의 조합별로 그룹화된 데이터를 조회할 때 유용합니다.

 


3. GROUPING SETS: 특정 조합의 집계만 생성

 

GROUPING SETS는 ROLLUP과 CUBE와 달리, 사용자가 원하는 조합에 대해서만 그룹화를 수행할 수 있는 기능을 제공합니다.

 

SELECT Department, Product, SUM(Sales) AS TotalSales  
FROM SalesData  
GROUP BY GROUPING SETS(  
    (Department, Product),  
    (Department),  
    (Product),  
    ()
);

 

이 쿼리는 Department(부서)-Product(상품), Department별, Product별, 전체 합계만을 생성합니다.

즉, ROLLUP이나 CUBE처럼 모든 조합을 계산하지 않고 필요한 그룹화만 수행합니다.

 

출력 결과 예시

 

Department Product TotalSales
Electronics Laptop 5000
Electronics Mobile 3000
Furniture Chair 2000
Furniture Desk 4000
Electronics NULL 8000 (부서 합계)
Furniture NULL 6000 (부서 합계)
NULL Laptop 5000 (상품 합계)
NULL Mobile 3000 (상품 합계)
NULL Chair 2000 (상품 합계)
NULL Desk 4000 (상품 합계)
NULL NULL 14000 (전체 합계)

 

필요한 조합만 지정할 수 있어, 불필요한 데이터까지 계산하는 것을 방지합니다.
ROLLUP과 CUBE보다 성능이 뛰어나며, 보고서 생성 시 유용합니다.

 


4. SQL 그룹 함수 비교 정리

 

연산자 설명 집계 방식 사용 예시
ROLLUP 계층적 그룹화 집계 (부서별 → 전체) 상위 수준으로 그룹화 부서-상품별 판매량 분석
CUBE 모든 조합의 집계를 생성 다차원 데이터 요약 부서·상품 개별 집계 필요 시
GROUPING SETS 특정 그룹 조합만 선택하여 집계 사용자가 정의한 조합 맞춤형 보고서 생성

 


5. 결론

 

ROLLUP → 계층적 데이터 요약, 특정 기준별 집계 계산.


CUBE → 모든 가능한 조합에 대한 집계 생성, 다차원 분석 가능.


GROUPING SETS → 필요한 조합만 지정하여 효율적인 그룹화 수행.


데이터 분석 및 보고서 생성 시, 필요한 방식에 따라 적절한 그룹 함수를 선택해야 함.

 

SQLD 자격증 대비를 위해 각 그룹 함수의 개념과 차이점, 실행 순서를 정확히 이해하고 실습해 보세요!

반응형