Z
ZHANK
编程在线教程SQL 教程GROUP BY 分组查询
分组与聚合

GROUP BY 分组查询

掌握分组统计、多列分组、聚合函数配合

GROUP BY 分组查询

聚合函数把多行变成一行。GROUP BY 告诉它"按什么分组聚合"——比如"每个城市的平均年龄"。

学完本章你将: 掌握单列/多列分组、分组+聚合、执行顺序。


基本分组

sql
-- 每个城市的用户数量
SELECT city, COUNT(*) AS 人数
FROM users
GROUP BY city;

多列分组

sql
-- 每个城市 + 年龄组合的人数
SELECT city, age, COUNT(*) AS 人数
FROM users
GROUP BY city, age;
-- 北京 20 岁的人数、北京 21 岁的人数...

和 WHERE 配合

sql
-- 先过滤,再分组
SELECT city, AVG(age) AS 平均年龄
FROM users
WHERE age > 18           -- WHERE 在 GROUP BY 前(过滤原始行)
GROUP BY city;

SQL 执行顺序

理解这个顺序才能写出正确查询:

FROM  →  WHERE  →  GROUP BY  →  HAVING  →  SELECT  →  ORDER BY
 ①       ②          ③           ④          ⑤          ⑥
  • WHERE 过滤的是原始行(分组前)
  • HAVING 过滤的是分组后的结果(下一章详讲)
  • GROUP BY 的列必须出现在 SELECT 中(聚合列除外)