首页 > 其他 > 详细

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

时间:2014-02-22 10:35:27      阅读:400      评论:0      收藏:0      [点我收藏+]
--分组查询
 --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

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

原文:http://blog.csdn.net/yyc1023/article/details/19636189

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!