首页 百科知识 分组统计查询

分组统计查询

时间:2022-10-16 百科知识 版权反馈
【摘要】:SELECT语句不仅可以通过WHERE子句查找满足条件的数据,还可以通过聚合函数对满足条件的数据进行求最大值、最小值、平均值、求和、计数等统计运算。常用的聚合函数见表3-27。这些聚合函数一般从一组值中计算出一个汇总信息,可使用GROUP BY 子句把字段按照值分为多组,对每个组进行统计。

3.4.5 分组统计查询

SELECT语句不仅可以通过WHERE子句查找满足条件的数据,还可以通过聚合函数对满足条件的数据进行求最大值、最小值、平均值、求和、计数等统计运算。常用的聚合函数见表3-27。

表3-27 聚合函数

img110

这些聚合函数一般从一组值中计算出一个汇总信息,可使用GROUP BY 子句把字段按照值分为多组,对每个组进行统计。

例36:选出平均成绩超过80分的学生的学号和平均成绩:

select 学号,AVG(成绩) AS 平均成绩 FROM SCORE_INFO GROUP BY 学号 having avg(成绩)>=80

查询结果如表3-28所示。

表 3-28

img111

例37:列出各门课的平均成绩、最高成绩、最低成绩和选课人数。

SELECT 课程代码,AVG(成绩) AS 平均成绩,MAX(成绩) AS 最高成绩,MIN(成绩) AS最低成绩,COUNT(学号) AS 人数 FROM Score_info GROUP BY 课程代码

查询结果如表3-29所示。

表 3-29

img112

例38:统计VB程序设计课程成绩在85分以上的人数:

SELECT COUNT(成绩) AS "VB程序设计85分以上的人数" FROM Score_info

Where 成绩>=85 AND 课程代码=(SELECT 课程代码

FROM Course_info where 课程名称="VB程序设计")

查询结果如表3-30所示。

表 3-30

img113

例39:列出至少修了2门课的学生姓名。

SELECT 姓名 FROM Student_info

WHERE 学号 IN(SELECT 学号 FROM Score_info

GROUP BY 学号 HAVING COUNT(*)>=2)

该语句的执行过程如下:先在考试成绩表(Score_info)按学号对学生进行分组,然后通过HAVING子句测试每个分组中包含的记录个数是否大于等于2。如果满足条件,则该组的学号即为所求,再根据学生基本信息表(Student_info)查找到对应姓名。

查询结果如表3-31所示。

表 3-31

img114

注意:HAVING子句和WHERE子句的区别:WHERE子句是用来测试指定表中记录所应满足的条件,只有满足条件的记录才参加运算;HAVING子句是用来指定每一分组所应满足的条件,只有满足HAVING条件的那些组才能包含在查询结果中。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈