개발이야기/MySQL

[MySQL] WITH ROLLUP 사용해서 데이터 합계, 집계 하기

후린개발자 2023. 9. 7.
반응형

WITH ROLLUP은 결과 집합에 대한 부분 합계 및 총합계를 생성하는 데 사용되는 기능입니다. GROUP BY 절과 함께 주로 사용되지만 다른 집계 함수와 함께 사용될 수도 있습니다. WITH ROLLUP을 사용하면 원본 데이터에 대한 하위 합계와 최종 합계를 표시할 수 있으며, 이를 통해 데이터 요약 및 분석이 더욱 용이해집니다.

 

사용법

SELECT column1, column2, ..., 집계함수 AS alias
FROM table
GROUP BY column1, column2, ..., WITH ROLLUP;

 

검색할 열을 나열하고 필요한 경우 집계 함수를 사용하여 계산된 결과를 가져옵니다. GROUP BY 구문을 통해 결과를 그룹화할 열을 나열합니다. 이 열을 기준으로 데이터가 그룹화됩니다.
마지막으로 WITH ROLLUP으로 하위 합계와 총합계를 생성합니다.

 

예제 쿼리

 

sales 테이블 데이터

 

select year, month,
CASE		
		WHEN product_category IS NULL AND month is null THEN '전체 합계'
        WHEN product_category IS NULL THEN '월 합계' 
        ELSE product_category
END AS product_category,
total_sales
from(
SELECT
    YEAR(sale_date) AS year,
    MONTH(sale_date) AS month,
    product_category,
    SUM(sales_amount) AS total_sales
FROM
    sales
GROUP BY
    year, month, product_category WITH ROLLUP
HAVING 
    (YEAR IS NOT NULL OR MONTH IS NOT NULL OR product_category IS NOT NULL)
)a

 

위의 예제 쿼리는 연도와 월별로 그룹화하고, WITH ROLLUP을 사용하여 부분 합계 및 총합계를 표시합니다. CASE 문을 사용하여 제품 카테고리에 월 합계, 전체 합계를 나타냈습니다.

 

 

예제 쿼리 결과

 

반응형

댓글

💲 추천 글