一.聚合函数综合案例
统计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之后