CSharp基础起步第十六期---SqlServer 基础04(聚合函数,数据分组)

CSharp基础起步第十六期---SqlServer 基础04(聚合函数,数据分组),第1张

概述1.数据分组 在使用select查询的时候,有时需要对数据进行分组汇总(即:将现有的数据按照某列来汇总统计),这时就需要用到group by语句。 1.请从学生表中查询出每个班的班级Id和班级人数:(见备注1) 2 .请从学生表中查询出每个班的班级Id和班级中男同学的人数: (见备注2) 备注1: select tSClassId as 班级Id, count(*) as 班级人数 from Tb


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(聚合函数,数据分组)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1167487.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存