17.group by分组统计
1.基本使用
SELECT column1,column2,column3...... FROM table_namegroup by column
示例
统计学生的总成绩平均分,按班级分组:
SELECT avg(chinese + math + english) FROM students group by class
结果:
可以看到四个班级的总成绩平均分已经出来了。
2.having过滤
SELECT column1,column2,column3...... FROM table_namegroup by column having......
示例
统计学生的总成绩平均分,按班级分组,且过滤掉总成绩平均分不够240的班级:
SELECT avg(chinese + math + english) FROM students group by class having avg(chinese + math + english) >= 240
结果:
可以看到240分以下的班级已经被过滤掉了。
但是这里还是有一点不足:我们在过滤时又进行了一次平均分的计算,所以这里我们用别名来优化一下sql的效率。
SELECT avg(chinese + math + english) as avg_score FROM students group by class having avg_score >= 240
结果:
这样在面对数据量巨大时有助于提升sql语句的执行效率。