본문 바로가기

IT/DB

데이터베이스 SQL쿼리 rollup 합계 사용하는 방법

728x90
반응형

 

 

 

ROLLUP은 SQL에서 여러 수준의 집계(소계와 총계)를 생성하는 데 사용되는 그룹핑 옵션입니다.

 

이를 사용하여 데이터의 그룹별 합계는 물론, 전체 총계도 함께 조회할 수 있습니다.

 

아래는 ROLLUP을 사용하는 방법과 예시입니다.

 

기본 구문

 
SELECT column1, column2, ..., AGGREGATE_FUNCTION(column) 
FROM table_name 
GROUP BY ROLLUP(column1, column2, ...);​

 

예시 1: 단일 컬럼에서 ROLLUP 사용

 

 

예를 들어 Sales 테이블이 있고, 각 region별로 총 sales_amount를 구하면서 전체 총계도 계산하려면 ROLLUP을 사용하여 처리할 수 있습니다.

SELECT region, SUM(sales_amount) AS total_sales 
FROM Sales 
GROUP BY ROLLUP(region);​

 

결과 예시:

region total_sales
North 10000
South 15000
East 12000
West 13000
NULL 50000
  • NULL 값은 전체 합계를 나타냅니다.

 

예시 2: 다중 컬럼에서 ROLLUP 사용

 

ROLLUP을 다중 컬럼으로 사용할 경우, 첫 번째 컬럼별 소계, 두 번째 컬럼별 소계, 그리고 최종 총계를 제공합니다.

 

예를 들어, region과 product별로 sales_amount 합계를 구하는 경우:

 

쿼리:

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

 

결과 예시:

region product total_sales
North A 5000
North B 5000
North NULL 10000
South A 8000
South B 7000
South NULL 15000
NULL NULL 25000

 

  • 각 region 내 product별로 합계가 계산됩니다.
  • product가 NULL인 행은 해당 region의 소계를 나타냅니다.
  • region과 product 모두 NULL인 마지막 행은 전체 총계를 의미합니다.

 

예시 3: ROLLUP과 여러 집계 함수 사용

SUM, AVG, COUNT 같은 여러 집계 함수를 조합하여 사용하면 다양한 계산 결과를 볼 수 있습니다.

쿼리:

SELECT region, product, SUM(sales_amount) AS total_sales, AVG(sales_amount) AS avg_sales 
FROM Sales 
GROUP BY ROLLUP(region, product);

 

  • 이 쿼리는 각 region과 product별로 sales_amount의 총합과 평균을 계산합니다.
  • ROLLUP으로 계층적 집계를 생성하여, 모든 수준에서 소계와 총계가 표시됩니다.

 

요약

  • ROLLUP은 그룹화된 데이터에서 각 그룹별 소계와 총계를 구하는 데 유용합니다.
  • 단일 및 다중 컬럼에서 모두 사용할 수 있으며, 데이터를 계층적으로 요약할 수 있습니다.
  • 일반적인 구문: GROUP BY ROLLUP(column1, column2, ...)

 

728x90
반응형