(七):分组查询、数据汇总示例

--分组查询
 --group by 分组技术
 /*
语法:
group by[all] 分组条件表达式
[with {cube | rollup}]
all : 包含所有组和结果,甚至包含不满足where条件的记录
 */
 /*
分组规则:
注意:在指定group by语句时,选择列表中任意非聚合表达式(含有聚合函数的表达式)内的所有列都应该包含在gruop by列表中
 */
 --简单分组(不包含cube或rollup关键字)
 --查询学生表中的年龄并分组计算人数
 select  Sage,COUNT(Sname) as 人数 from Student 
 group by  Sage 
 select * from Student
 select Sname,COUNT(Sname) as 人数 from Student 
 group by all Sname 
 --带有having子句的普通分组查询
 /*
having 子句是应用于结果集的附加筛选,用在向使用group by的子句查询中添加数据过滤准则
 */
 /*
having语句和where的区别:
where语句是对整表中的数据进行筛选满足条件的行
having语句是对group by 分组查询后产生的组加条件,筛选出满足条件的组
 */
 --在SC表中查询选修了两门及以上课程的学生号和选课数
 use Student
 go
 select Sno ,COUNT(Sno) as 选课数 
 from SC group by(Sno) having COUNT(Sno)>=2
 select * from SC

--分组查询(续)
select * from Student
--简单分组查询
--按照年龄将学生分类,并显示各个年龄的学生的人数
select Sage ,COUNT(Sname) from Student 
group by Sage
having COUNT(Sname)>1


--with cube 关键字的使用
/*
with cube 关键字的作用:
cube指定在结果集合中不仅包含由group by提供的行,而且还包括“汇总行”。
*/
select Sage ,COUNT(Sname) as 该年龄段的人数 from Student 
group by Sage
with cube
--查询SC表中被选修的各门课的平均成绩和选修该门课的人数
select * from SC
--
select Cno ,AVG(Grade) as 平均成绩,COUNT(Sno) as 人数
from SC 
group by Cno 
with cube


--with rollup 关键字的使用
/*
with rollup 关键字的作用:
rollup指定包括汇总行,但按照层次结构顺序,包括从组内的低级级别到高级级别的所有汇总行
注意:分组的层次顺序会直接影响结果集内生成的行数。
*/
select Cno ,AVG(Grade) as 平均成绩,COUNT(Sno) as 人数
from SC 
group by Cno 
with rollup --当只有一个分组层次时rollup的作用和cube的作用都相同


select Sage,Ssex ,COUNT(Sname) as 该年龄段的人数 from Student 
group by Sage,Ssex 
with rollup


--数据汇总(明细汇总)
--compute关键字的作用
/*
在select语句中使用聚合函数查询数据汇总时,没有汇总明细值,而compute关键字可以解决该问题
*/
/*
语法:
compute 聚合函数名(expression)[by expression]
*/
--查询所有学生信息并统计人数
select * from Student compute count (Sno)
--查询所有学生信息,并统计各个年龄段的学生人数
/*
在使用compute by expression时也必须同时使用 order by expression对结果进行排序
且compute和排序所依据的列名必须相同
*/
select * from Student order by Sage compute count(Sno) by Sage
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值