首页/数据/SQL 速查/ROLLUP 分组小计与合计
本包目录(311 条)
查询基础33 条连接与子查询40 条
聚合与窗口函数54 条
函数速查60 条变更与事务52 条性能与执行计划72 条

ROLLUP 分组小计与合计

GROUP BY ... WITH ROLLUP 在结果中追加小计与总计行:MySQL 8 与 PostgreSQL 均支持,小计行的分组列显示为 NULL。

SQL 速查数据更新于 2026-10-12

示例

示例
SELECT city, status, COUNT(*) AS cnt
FROM users
GROUP BY city, status WITH ROLLUP;
层级按分组列从左到右逐级汇总
小计行被汇总的列为 NULL
识读用 GROUPING() 区分“真 NULL”与“小计 NULL”

易错点

  • 小计行的 NULL 与被分组列本身的 NULL 混淆,需要 GROUPING() 配合区分
  • 需要固定展示顺序时把 ROLLUP 结果包一层子查询再排序,别依赖实现顺序

数据来源与参考

  • MySQL 8.0 Reference Manual · GROUP BY Modifiers · WITH ROLLUP
  • PostgreSQL Documentation · GROUP BY · ROLLUP
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌