📜  mysql 对具有相同值的行进行分组 - SQL (1)

📅  最后修改于: 2023-12-03 14:44:29.745000             🧑  作者: Mango

MySQL 对具有相同值的行进行分组

在MySQL中,可以使用GROUP BY语句对具有相同值的行进行分组。通过将行分为多个组,可以对每个组执行聚合函数(例如COUNTSUMAVG等)来获取分组的统计结果。

语法

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)