DB/SQL

[MYSQL] 그룹화된 데이터의 합계 구하기 : WITH ROLLUP 활용 (feat. GROUP BY)

카제인나트륨. 2024. 12. 20. 19:12
728x90
반응형

 

WITH ROLLUP

 

데이터베이스에서 그룹화된 데이터를 조회할 때, 마지막 행에 합계를 자동으로 구해주는 기능이 있습니다. 이 기능을 몰랐을 땐 반복문으로 데이터를 스택으로 쌓거나, 따로 쿼리로 추출했었지만, 이 기능을 사용하면 매우 쉽게 합계를 구할 수 있습니다.

 

정의

  • WITH ROLLUP은 GROUP BY와 함께 사용되어 그룹화된 데이터의 합계를 계산합니다.

 

사용 사례

  • 데이터 분석에서 각 그룹의 합계를 구할 때.
  • 재무 보고서에서 월별, 연도별 합계를 계산할 때.

 

작동 원리

  • 마지막에 추가된 행에 각 그룹의 합계를 계산.
  • NULL 값으로 그룹화 키를 표시.

 

 

예시

 

SELECT
    department,
    SUM(salary) AS total_salary
FROM employees
GROUP BY department WITH ROLLUP;

 

department total_salary
Sales 30000
HR 15000
NULL 45000

 

 

SELECT department, year, SUM(salary) AS total_salary
FROM sales
GROUP BY department, year WITH ROLLUP;

 

department year total_salary
Finance 2022 4000
Finance 2023 8000
Finance null 12000
IT 2022 2000
IT 2023 7000
null null 19000

 

응용

COALESCE로 NULL 처리합니다. NULL값을 텍스트로 대체합니다.

SELECT
    COALESCE(region, '합계') AS department,
    SUM(salary) AS total_salary
FROM employees
GROUP BY  department WITH ROLLUP;

 

department total_salary
Sales 30000
HR 15000
합계 45000

 

 

한계

 

ROLLUP은 GROUP BY에 의존합니다. ORDER BY와 같은 정렬과 함께 사용시 주의해야 합니다.

 

728x90
반응형