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

GROUP BY 分组统计

按列值分组后对每组计算聚合:SELECT 列表里只能出现分组列与聚合表达式,这是标准与两库默认强制的约束。

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

示例

示例
SELECT city,
       COUNT(*)              AS user_cnt,
       ROUND(AVG(age), 1)    AS avg_age
FROM users
GROUP BY city
ORDER BY user_cnt DESC;
语义相同分组键合并为一行,聚合按组计算
约束非聚合列必须出现在 GROUP BY 中
NULL分组键为 NULL 的行归为一组

易错点

  • 漏写 GROUP BY 列会报 ONLY_FULL_GROUP_BY 错误(MySQL)或 must appear in GROUP BY(PG)
  • 分组前先把不需要的行过滤掉(WHERE),分组结果再过滤用 HAVING

数据来源与参考

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