MySQL | WITH ROLLUP 합계

GROUP BY를 사용하면 GROUP BY 뒤에 나오는 컬럼별로 합계를 구해준다.
이때, 아쉬운 점이 있다면 항목별 합계에 전체 합계가 같이 나오게 하는 것이다.

이럴 때에 사용하는 것이 WITH ROLLUP 이다.

WITH ROLLUP는 그룹별로 합계를 한번에 구할때 사용한다.

WITH ROLLUP 문법

SELECT "필드1", SUM("필드2")
FROM "테이블명"
GROUP BY "필드1"
WITH ROLLUP

WITH ROLLUP 예제

store_information 테이블

region_name store_name sales
West Los Angeles 1500
West San Diego 250
West Los Angeles 300
East Boston 700

위와 같은 테이블이 있다고 했을 때, 아래와 같이 명령문을 입력한다.

SQL 예제 1)

SELECT store_name, SUM(sales)
FROM store_information
GROUP BY store_name
WITH ROLLUP

실행 결과

store_name SUM(sales)
Boston 700
Los Angeles 1800
San Diego 250
NULL 2750
마지막 열에 합계가 2750이 표시되고 있다.

SQL 예제 2)

SELECT region_name, store_name, SUM(sales)
FROM store_information
GROUP BY region_name, store_name
WITH ROLLUP

실행 결과

region_name store_name SUM(sales)
East Boston 700
East NULL 700
West Los Angeles 1800
West San Diego 250
West NULL 2050
NULL NULL 2750

2번째 열에 East의 합계가 700이고, 4번째 열에 East의 합계가 2050이 표시되고 있다.
그리고, 5열에 이 모든 합계인 2750이 표시된다.