MySQL 分组语句 GROUP BY

MySQL的GROUP BY语句用于将查询结果按照一个或多个列进行分组,通常与聚合函数(如SUM、AVG、COUNT等)一起使用,以对每个分组的数据进行汇总计算。下面是GROUP BY语句的示例:

假设有以下数据表”students”:

id    name    age gender  score
1    Alice    20  F   90
2    Bob      22  M   80
3    Charlie  21  M   85
4    David    20  M   92
5    Eva      21  F   87

可以使用以下SQL语句按照”gender”列进行分组,并对每个分组的成绩进行平均值计算:

SELECT gender, AVG(score) as avg_score
FROM students
GROUP BY gender;

执行以上SQL语句,得到以下查询结果:

gender    avg_score
F         88.5
M         85.6667

GROUP BY语句可以指定多个列进行分组,例如:

SELECT gender, age, AVG(score) as avg_score
FROM students
GROUP BY gender, age;

执行以上SQL语句,得到以下查询结果:

gender    age avg_score
F	  20	90
F	  21	87
M	  20	92
M	  21	85
M	  22	80

GROUP BY语句还可以与HAVING子句一起使用,以过滤分组后的结果。例如,以下SQL语句可以查询平均成绩大于85的男性学生:

SELECT gender, AVG(score) as avg_score
FROM students
GROUP BY gender
HAVING gender = 'M' AND AVG(score) > 85;

执行以上SQL语句,得到以下查询结果:

gender    avg_score
M    85.6667