GROUP BY和集合函数

本文介绍SQL中集函数的应用,包括计数、平均数、最大值等,并通过实例展示了如何使用COUNT、AVG、MAX等函数进行数据统计。同时讲解了GROUP BY子句的用法,以及如何结合HAVING短语筛选符合条件的数据组。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用集函数

SQL提供了许多集函数,主要包括:

26 查询学生总人数。

SELECT COUNT(*AS Expr1 FROM student

 27 查询选修了课程的学生人数。

注:前者是正确的,后者是没有加DISTINCT修饰的情况。

SELECT COUNT(DISTINCT  Sno) AS Expr1 FROM SC

SELECT COUNT(Sno) AS Expr1 FROM SC

28计算1号课程的学生平均成绩。

SELECT AVG(Grade) FROM SC  WHERE Sno='1'

29 查询学习1号课程的学生最高分数。

SELECT MAX(Grade) FROM SC WHERE Sno='1'
五、对查询结果分组

GROUP BY子句可以将查询结果表的各行按一列或多列值分组,值相等的为一组。

对查询结果分组的目的是为了细化集函数的作用对象。如果未对查询结果分组,集函数将作用于整个查询结果,即整个查询结果只有一个函数值。否则,集函数将作用于每一个组,即每一组都有一个函数值。

30 查询各个课程号与相应的选课人数。

SELECT Cno, Count(Sno) AS Expr1 FROM SC GROUP BY Cno 

31 查询选修了2门以上课程的学生的学号。

SELECT Sno FROM SC GROUP BY Sno HAVING (COUNT(*)>2)

 

WHERE子句与HAVING短语的区别在于作用对象不同。WHERE子句作用于基本表或视图,从中选择满足条件的元组。HAVING短语作用于组,从中选择满足条件的组。

先用GROUP BY子句按Sno分组,再用集函数COUNT对每一组计数。HAVING短语指定选择组的条件,只有满足条件(即元组个数>3,表示此学生选修的课超过3门)的组才会被选出来。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值