1.数据分组
在使用select查询的时候,有时需要对数据进行分组汇总(即:将现有的数据按照某列来汇总统计),这时就需要用到group by语句。
1.请从学生表中查询出每个班的班级ID和班级人数:(见备注1)
2 .请从学生表中查询出每个班的班级ID和班级中男同学的人数: (见备注2)
备注1:
select
tSClassID as 班级ID,
count(*) as 班级人数
from TblStudent
group by TSClassID
备注2:
select
tSClassID as 班级ID,
count(*) as 班级人数
from TblStudent
where tSGender='男'
group by TSClassID
GROUP BY子句必须放到WHERE语句的之后,Group By与Order By都是对筛选后的数据进行处理,而Where是用来筛选数据的。
没有出现在GROUP BY子句中的列是不能放到SELECT语句后的列名列表中的 (聚合函数中除外)
错误: select sClassID,count(sname),sAge from student group by sClassID
正确: select sClassID,avg(sAge) from student group by sClassID
2.Having语句(对组的筛选,哪些组显示哪些组不显示)
对表中的数据分组后,会得到一个分组后的结果集,如何对该结果集在进行筛选?→
having
查询班级人数超过三个人的班级。
select
tSClassID as 班级ID,
count(*) as 班级人数
from TblStudent
group by TSClassID
having count(*)>3
在Where中不能使用聚合函数,必须使用Having,Having要位于Group By之后。
Having的使用几乎是与where一样的,也可以用in。
Having count(*) in (5,8,10)
select sClassID,count(sname) from student where count(sname)>3 group by sClassID (错误的)
聚合函数不应出现在WHERE 子句中
Group by 前可以有where,是对筛选过后的数据进行分组
3.SQL语句的执行顺序
1>…From 表 Join 表 on
2>…Where 条件
3>…Group by 列
4>…Having 筛选条件
5>…Select 5-1>选择列,5-2>distinct,7>top(应用top选项最后计算)
6>…Order by 列
欢迎关注趣味CSharp,完整笔记与您分享~~~~~~~~
总结以上是内存溢出为你收集整理的CSharp基础起步第十六期---SqlServer 基础04(聚合函数,数据分组)全部内容,希望文章能够帮你解决CSharp基础起步第十六期---SqlServer 基础04(聚合函数,数据分组)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)