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

regionproductamount
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);

结果:

regionproducttotal
North Apple 100
North Banana 200
North NULL 300
South Apple 150
South Banana 250
South NULL 400
NULL NULL 700

NULL 表示该列被“汇总”了(即不按该列分组)。

 

posted @ 2025-11-19 14:52  chao_xiong  阅读(5)  评论(0)    收藏  举报