本文通过实例介绍GROUP BY子句的使用方法。
1 准备测试数据
新建数据表tb_Student并插入下图所示的测试数据。
图1 数据表tb_Student的数据
2 使用GROUP BY子句进行分组
问题1
要求
按照班级ID对学生进行分组,并查询出每个班级的学生数,学生的最大年龄,最小年龄,年龄总和及年龄平均等信息。
解答
SELECT s.class_id AS 班级,COUNT(*) AS 人数,MAX(s.student_age) AS 年龄最大,MIN(s.student_age) AS 年龄最小,SUM(s.student_age) AS 年龄总和,AVG(s.student_age) AS 年龄平均 FROM tb_Student AS s GROUP BY s.class_id
查询结果
图2 问题1的查询结果
问题2
要求
查询出存在年龄小于25周岁学生的班级ID及班级人数。
解答
SELECT s.class_id AS 班级,COUNT(*) AS 人数 FROM tb_Student AS s GROUP BY s.class_id HAVING MIN(s.student_age)<25
查询结果
图2 问题2的查询结果
3 知识总结
使用GROUP BY子句可以对数据按照一个或者多个字段进行分组操作,并可以对分组结果进行过滤操作,其语法形式为:
[GROUP BY 字段][HAVING <条件表达式>]
其中:“GROUP BY 字段”部分完成分组操作;“HAVING <条件表达式>”部分对分组结果进行过滤操作。
时间: 2024-10-28 16:28:09