CSharp基础起步第十六期---SqlServer 基础04(聚合函数,数据分
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 5>…Select 5-1>选择列,5-2>distinct,7>top(应用top选项最后计算) 6>…Order by 列 欢迎关注趣味CSharp,完整笔记与您分享~~~~~~~~ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |