📅  最后修改于: 2023-12-03 14:44:29.745000             🧑  作者: Mango
在MySQL中,可以使用GROUP BY
语句对具有相同值的行进行分组。通过将行分为多个组,可以对每个组执行聚合函数(例如COUNT
、SUM
、AVG
等)来获取分组的统计结果。
SELECT 列1, 列2, ... FROM 表名 GROUP BY 列1, 列2, ...;
其中,列1, 列2, ...
代表要分组的列,表名
代表要查询的表。
假设有一个名为students
的表,包含以下几列:id
(学生ID)、name
(学生姓名)、age
(学生年龄)、grade
(学生成绩)。
| id | name | age | grade | |----|--------|------|-------| | 1 | John | 18 | 92 | | 2 | Alice | 19 | 95 | | 3 | Bob | 18 | 88 | | 4 | Alice | 20 | 89 | | 5 | John | 18 | 94 | | 6 | Bob | 19 | 90 |
现在,我们想统计每个学生的平均成绩。可以使用GROUP BY
语句来实现:
SELECT name, AVG(grade) as average_grade
FROM students
GROUP BY name;
以上查询将根据name
列对学生记录进行分组,并计算每个组的平均成绩。结果如下:
| name | average_grade | |--------|---------------| | John | 93 | | Alice | 92 | | Bob | 89 |
GROUP BY
语句中,被分组的列必须出现在SELECT
子句中,或者是聚合函数的参数。GROUP BY
后面依次列出即可。GROUP BY
子句中使用表达式,例如GROUP BY YEAR(date_column)
。