9.2、ROLLUP 分组 小计和总计
1、ROLLUP
是GROUP BY子句的扩展,用于生成包含小计和总计的超级聚合行。
自动为指定列的层级结构生成多个级别的聚合结果,包括从最细粒度到最粗粒度(总计)的所有组合。
SELECT 列1, 列2, 聚合函数(列3) FROM 表名 GROUP BY 1、 (列1, 列2, 列3); -- 要分组的列
ROLLUP (列1, 列2, 列3) 会按层次分组,生成以下4个分组级别:
1. (列1, 列2, 列3) -- 最详细级别 2. (列1, 列2) -- 列1-列2级别的小计 3. (列1) -- 列1级别的小计 4. () -- 总体总计
表 sales:
| region | product | amount |
|---|---|---|
| North | Apple | 100 |
| North | Banana | 200 |
| South | Apple | 150 |
| South | Banana | 250 |
语句
SELECT region, product, SUM(amount) AS total FROM sales GROUP BY ROLLUP(region, product);
结果:
| region | product | total |
|---|---|---|
| North | Apple | 100 |
| North | Banana | 200 |
| North | NULL | 300 |
| South | Apple | 150 |
| South | Banana | 250 |
| South | NULL | 400 |
| NULL | NULL | 700 |
NULL 表示该列被“汇总”了(即不按该列分组)。
本文来自博客园,作者:chao_xiong,转载请注明原文链接:https://www.cnblogs.com/chao-xiong/p/19242526

浙公网安备 33010602011771号