分组聚集查询-GROUP BY子句

一、GROUP BY子句位置

SELECT 【ALL|DISTINCT】<目标列表达式1>【,<目标列表达式2>,...】

FROM <表名或视图名1>【,<表名或视图名2>,...】

【WHERE <元组选择条件表达式>】

【GROUP BY <属性列名1>【,<属性列2>,...】【HAVING <组选择条件表达式>】】

【ORDER BY <目标列名1>【ASC|DESC】【,<目标列名2>【ASC|DESC】,...】】

二、GROUP BY子句格式

【GROUP BY <属性列名1>【,<属性列2>,...】【HAVING <组选择条件表达式>】】

1、依次按属性列名1,属性列名2,...的值进行分组,属性列的值都相同的元组作为一个分组

2、HAVING子句会对分组进行筛选

3、聚集函数将以每个分组为单位作为计算对象

三、GROUP BY子句使用案例

1、例1:查询选修了课程的学生学号和平均成绩

select sNo,平均成绩=avg(grade)
from sC
group by sNo 

2、例2:查询平均成绩在96分以上的学生学号和平均成绩

select sNo,平均成绩=avg(grade)
from sC
group by sNo having avg(grade)>96

注意!!!!!在SELECT子句显示除聚集属性以外的属性和在HAVING子句中使用到的除聚集属性以外的属性必须是出现在GROUP BY子句中的属性

3、例3:查询男生人数超过2名的院系的名称

select sD
from s
where sex='男'
group by sD having count(*)>2

四、SELECT子句、WHERE子句、GROUP BY子句和HAVING短语的作用对象和执行顺序

1、WHERE子句对FROM子句中所指明的数据对象(表/视图)筛选出符合条件的元组

2、GOUP BY子句对WHERE子句筛选好的元组进行分组,产生初始分组

3、HAVING短语对GROUP BY子句产生的初始分组进行筛选,产生最终分组

4、SELECT子句对HAVING短语产生的最终分组产生查询结果,即结果表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值