首页/数据/SQL 速查/GROUPING() 区分小计行
聚合与窗口函数54 条

GROUPING() 区分小计行

GROUPING(列) 在超级聚合(小计/合计)行返回 1、普通行返回 0,用来把 NULL 与小计正确区分开。

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

示例

示例
SELECT city,
       GROUPING(city) AS is_total,
       COUNT(*)       AS cnt
FROM users
GROUP BY city WITH ROLLUP;
返回值0=普通行,1=该列被汇总的超聚合行
支持MySQL 8 与 PostgreSQL 均可用
用途报表展示“合计”标签、过滤小计行

易错点

  • 把 GROUPING() 用在没有 ROLLUP/GROUPING SETS 的查询上会报错或返回无意义值
  • 用 is_total 过滤小计行时记得在 ORDER BY 里也处理,避免小计行排到中间

数据来源与参考

  • MySQL 8.0 Reference Manual · GROUPING Function
  • PostgreSQL Documentation · GROUPING Function
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌