WITH ROLLUP
是MySQL中的一个子句,用于创建一个包含额外行的结果集,这些额外的行代表了上级(更高层次)的汇总数据。
在使用GROUP BY
子句进行分组查询时,如果我们需要获取每个分组的汇总信息,以及所有分组的总汇总信息,可以使用WITH ROLLUP
。
例如,有一个销售表如下:
Year | Country | Product | Profit |
---|---|---|---|
2000 | USA | Bike | 1000 |
2000 | USA | Car | 1500 |
2000 | Japan | Bike | 2000 |
2001 | USA | Bike | 500 |
2001 | Japan | Bike | 3000 |
2001 | Japan | Car | 2000 |
你可以运行以下SQL查询来获取每年、每个国家的总利润:
SELECT Year, Country, SUM(Profit)
FROM Sales
GROUP BY Year, Country WITH ROLLUP
这将返回下面的结果:
Year | Country | SUM(Profit) |
---|---|---|
2000 | USA | 2500 |
2000 | Japan | 2000 |
2000 | NULL | 4500 |
2001 | USA | 500 |
2001 | Japan | 5000 |
2001 | NULL | 5500 |
NULL | NULL | 10000 |
在这里,NULL
值表示一个汇总行。例如,年份为2000,国家为NULL的行表示2000年所有国家的总利润。年份和国家都为NULL的行则表示所有年份、所有国家的总利润。
请注意,WITH ROLLUP
的使用应与GROUP BY
一起,并且WITH ROLLUP
应放在GROUP BY
之后。