WITH ROLLUP은 GROUP BY 절과 함께 사용되는 MySQL의 수정자(modifier)입니다. 이 수정자를 사용하면 그룹별 집계 결과 외에도, 전체 데이터를 대표하는 상위 수준의 요약(총계) 행이 결과에 자동으로 추가됩니다.
WITH ROLLUP의 주요 특징
일반적인 GROUP BY 쿼리는 각 그룹별로 집계된 값만 반환하지만, WITH ROLLUP을 적용하면 다음과 같은 장점이 있습니다.
- 각 그룹의 소계와 함께 전체 합계가 마지막 행에 표시됩니다.
- 총계 행의 그룹 기준 컬럼 값은 NULL로 표시되어 일반 그룹 행과 구분됩니다.
- 보고서나 통계 화면에서 별도의 쿼리 없이 한 번의 조회로 소계와 총계를 모두 얻을 수 있어 편리합니다.
사용 예제
아래 예제에서는 ratelist 테이블의 Item별 가격 합계를 구하면서, WITH ROLLUP 수정자를 통해 마지막 행에 전체 가격의 총합(3237)이 함께 출력되었습니다.
mysql> Select Item, SUM(Price) AS Price from ratelist Group by item WITH ROLLUP; +------+-------+ | Item | Price | +------+-------+ | A | 502 | | B | 630 | | C | 1005 | | h | 850 | | T | 250 | | NULL | 3237 | +------+-------+ 6 rows in set (0.00 sec)
결과를 보면 Item별 합계(A~T)가 각각 출력되고, Item 값이 NULL인 마지막 행에는 전체 가격의 총합인 3237이 표시됩니다. 이처럼 WITH ROLLUP은 GROUP BY의 확장 기능으로, 소계와 총계를 손쉽게 함께 조회해야 하는 경우 유용하게 활용할 수 있습니다.