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
반응형
'DB > SQL' 카테고리의 다른 글
[MYSQL] 위도와 경도로 가장 가까운 최단거리 구하기, 하버사인 공식(Haversine formula) (0) | 2024.10.18 |
---|---|
[MYSQL] Illegal mix of collations utf8mb4_general_ci 에러 (0) | 2024.07.12 |
[MYSQL] 금주, 이번주 요일 및 날짜 출력하기 (0) | 2023.09.12 |
[MYSQL] HeidiSQL로 트리거(Trigger) 부착하기 (1) | 2023.06.08 |
SQL 페이지네이션(Pagination) 최적화 (0) | 2023.05.27 |