SQLServer分组查询

一.聚合函数综合案例

统计Student表中元素的总个数,分数总和,平均分,最高分和最低分

select count(*) 学生总人数,sum(Score) 分数总和,avg(Score) 平均分,max(Score) 最高分,min(Score) 最低分 
from Student

二.使用union链接列数相同且每列类型相同的数据案例

例:根据所在地区对一中数据进行统计

select '成都' 地区,count(*) 学生总人数,sum(Score) 分数总和,avg(Score) 平均分,max(Score) 最高分,min(Score) 最低分 
from Student
where Address = '成都'
union
select '西安' 地区,count(*) 学生总人数,sum(Score) 分数总和,avg(Score) 平均分,max(Score) 最高分,min(Score) 最低分 
from Student
where Address = '西安'

可以不断使用union链接,但是相对应的是代码实在太过繁琐,所以我们还是使用group by的方式进行分组

三.使用group by进行分组

select Address 地区,count(*) 学生总人数,sum(Score) 分数总和,avg(Score) 平均分,max(Score) 最高分,min(Score) 最低分 
from Student
group by Address

注意点:在分组查询中除了使用聚合函数的数据和使用group by和select后面的分组之外,数据都无法作为一列显示

也就是说,如果想要添加一列姓名,写出代码如下是会报错的

select Address 地区,Name,count(*) 学生总人数,sum(Score) 分数总和,avg(Score) 平均分,max(Score) 最高分,min(Score) 最低分 
from Student
group by Address

四.在使用分组查询时添加限制条件

例如我们加上一个出生日期的限制,只统计00后的数据

select Address 地区,count(*) 学生总人数,sum(Score) 分数总和,avg(Score) 平均分,max(Score) 最高分,min(Score) 最低分 
from Student
where Birth >= '2000-1-1'
group by Address

注意点:Where所写出的那一行限制条件应该在group by函数之前

五.在使用分组查询时添加多个限制条件,并且使用到聚合函数

例如我们再在日期后加入一个总人数在3人及以上的限制,那么就会用到聚合函数count(),但是where中是不能使用聚合函数作为限制条件的,所以我们需要用到having关键字

select Address 地区,count(*) 学生总人数,sum(Score) 分数总和,avg(Score) 平均分,max(Score) 最高分,min(Score) 最低分 
from Student
where Birth >= '2000-1-1'
group by Address
having count(*) >= 3

注意点:having关键字必须写到group by之后

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值