项目六 分类汇总学生信息

本文介绍了在MySQL中如何使用预定义函数处理文本和时间日期,以及如何运用聚合函数(如sum(),avg(),max(),min(),count())对学生表中的数据进行汇总、分组、筛选和排序。重点讲解了groupby,having子句的用法,以及如何根据业务需求进行复杂查询。
摘要由CSDN通过智能技术生成

项目六 分类汇总学生信息

1,研究一下MySQL中的常用预定义函数

用于文本串的处理函数

image.png

时间和日期函数

image.png

系统函数

image.png

2,根据业务需求查询表中的汇总信息

聚合函数的概念可以理解为:运行在行组上,计算和返回 单个值的函数。

对指定字段的数据汇总求和

#sum()语法:
sum(字段名)

#例如:计算 Score 表中 15101 同学各门课程的期末成绩总分。
select *,sum(ExamScore) 
from Score
where StuID=’15101’;

对指定字段的数据求平均值

#avg()语法:
avg(字段名)

#例如:计算 Score 表中 15101 同学各门课程的期末成绩平均分。
select *,avg(ExamScore) 
from Score
where StuID=’15101’;
#若想对某字段去掉重复值后再求平均值,可以使用 avg(distinct 字段名)。
#avg()函数只用于单个列,如果想获得多个列的平均 值,必须使用多个 avg()函数。

对指定字段的数据求最大值

#max语法:
max(字段名)

#例如:计算 Score 表中 15101 同学各门课程的期末成绩最高分。
select *,max(ExamScore) 
from Score
where StuID=’15101’;

对指定字段的数据求最小值

#min语法: 
min(字段名)

#例如:计算 Score 表中 15101 同学各门课程的期末成绩最低分。
select *,min(ExamScore) 
from Score
where StuID=’15101’;

统计表中记录的总行数

count (*): 统计记录的总条数,包含空值。
count (字段名):统计某个字段有值的记录个数,不包含该字段为空值(null)的记录。
count (distinct 字段名): 去掉重复值之后,再统计该字段有值的记录个数。

3,根据业务需求查询表中的分类信息

实现对信息的分组查询

#如果要对表中的数据按某一字段进行先分组,然后按组进行计算,可以使用 group by 子句。
#语法格式为: 
group by 字段 1,字段 2,......字段 n

#例如:统计 Student 表中男生和女生的人数。
select StuSex, count(*) as 人数
from Student
group by StuSex;
#group by 子句使用小结:
分组后可以看哪些字段:一般是分组的字段,和使用聚合函数的列;
group by 后跟多个字段时,即如想按多个字段分组,则需多个字段都相同才能分为一组。

#roll up 的使用方法是,在 group by 子句后面加 with rollup 即可。
#例如:统计 Student 表中每个地区的男生和女生数,并汇总每个地区的总人数。
select Native, StuSex, count(*) as 人数
from Student
group by Native, StuSex
with rollup;

实现信息分组后的筛选

#例如:查询 Student 表中学生总数大于等于 3 人的生源地有哪些。
select Native, count(*) as 人数
from Student
group by Native
having count(*)>=3;

#例如:查询平时成绩在 80 分以上的课程中期末平均分大于 90 分的课程有哪些。
select CourseID, avg(ExamScore) as 平均分
from Score
where PartScore>80
group by CourseID
having avg(ExamScore) >90;

#having 子句与 where 子句的使用总结:
1,where 是从原始数据中选择行,用于 from 子句之后
2,having 是对分组后的记录进行挑选,跟在 group by 之后
3,所有能够使用 where 的地方都可以使用 having,区别是 where 过滤行,而 having 过滤分组可以继续对分组后的数据进行排序及限制显示。

#例如:查询 Score 表中期末平均分大于 90 的课程,按期末平均分降序排列,并显示前 5 行。
select CourseID, avg(ExamScore) as 平均分
from Score
group by CourseID
having avg(ExamScore) >90
order by 平均分
limit 5;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值