ROLLUP
소계와 총 합계를 생성하여 출력하기 위한 구문
기본 문법
SELECT
select_list
FROM
table_name
GROUP BY
c1, c2, c3 WITH ROLLUP;SELECT
orderYear,
productLine,
SUM(orderValue) totalOrderValue
FROM
sales
GROUP BY
orderYear,
productline
WITH ROLLUP;GROUP조건이 여러개 일때
계층적으로 그룹화 세트가 만들어지며, 두개의 COLUMN이라면 C1에 대해 C2들의 합이 출력되고나서 C1의 총합들의 합이 출력된다.
출력될 때, 합의 기준이 된 COLUMN값은 NULL이 된다.
2003
Classic Cars
5571.80
2003
Montorcycles
2240.50
2003
Planes
4825.44
2003
Ships
5072.71
2003
Trains
2770.95
2003
Trucks and Buses
3284.28
2003
Vintage Cars
4080.00
2003
NULL
28045.68
2004
Classic Cars
8124.98
2004
Montorcycles
2598.77
2004
Planes
2857.35
2004
Ships
4301.15
2004
Trains
4646.88
2004
Trucks and Buses
4615.64
2004
Vintage Cars
2819.28
2004
NULL
29964.05
NULL
NULL
58009.75
GROUPING()
NULL 결과 집합이 부분합이나 총합을 나타내는지 확인하기 위한 함수
문법 예시
SELECT
orderYear,
productLine,
SUM(orderValue) totalOrderValue,
GROUPING(orderYear),
GROUPING(productLine)
FROM
sales
GROUP BY
orderYear,
productline
WITH ROLLUP;2003
Classic Cars
5571.80
0
0
2003
Montorcycles
2240.50
0
0
2003
Planes
4825.44
0
0
2003
Ships
5072.71
0
0
2003
Trains
2770.95
0
0
2003
Trucks and Buses
3284.28
0
0
2003
Vintage Cars
4080.00
0
0
2003
NULL
28045.68
0
1
2004
Classic Cars
8124.98
0
0
2004
Montorcycles
2598.77
0
0
2004
Planes
2857.35
0
0
2004
Ships
4301.15
0
0
2004
Trains
4646.88
0
0
2004
Trucks and Buses
4615.64
0
0
2004
Vintage Cars
2819.28
0
0
2004
NULL
29964.05
0
1
NULL
NULL
58009.75
1
1
이런 특성을 이용해 IF와 합쳐서 표현이 가능하다
SELECT
IF(GROUPING(orderYear),
'All Years',
orderYear) orderYear,
IF(GROUPING(productLine),
'All Product Lines',
productLine) productLine,
SUM(orderValue) totalOrderValue
FROM
sales
GROUP BY
orderYear ,
productline
WITH ROLLUP;2003
Classic Cars
5571.80
2003
Montorcycles
2240.50
2003
Planes
4825.44
2003
Ships
5072.71
2003
Trains
2770.95
2003
Trucks and Buses
3284.28
2003
Vintage Cars
4080.00
2003
All Product Lines
28045.68
2004
Classic Cars
8124.98
2004
Montorcycles
2598.77
2004
Planes
2857.35
2004
Ships
4301.15
2004
Trains
4646.88
2004
Trucks and Buses
4615.64
2004
Vintage Cars
2819.28
2004
All Product Lines
29964.05
All Years
All Product Lines
58009.75
Last updated