前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL系列(2)——聚合函数查询

MySQL系列(2)——聚合函数查询

作者头像
程序员的时光001
发布2020-07-14 16:57:05
1.6K0
发布2020-07-14 16:57:05
举报
文章被收录于专栏:程序员的时光程序员的时光

思维导图:

一、聚合函数查询

1.COUNT()函数——用来统计记录的条数;

例如查询grade表中有几条数据:

先看grade表中所有的数据:select * from grade;

select count(*) as total from grade;

总共9条数据,as total是给count(*)取别名;

2.SUM()函数——是求和函数,计算一列值的总和(此列必须是数值型数据);

例如查询grade表中张三的总分:

select stuName,sum(score) from grade where stuName='张三';

3.AVG()函数——求一列值的平均值的函数;

例如,查询表中张三的平均分:

select stuName,avg(score) from grade where stuName='张三';

4.MAX()函数——求一列值的最大值的函数

例如,查询表中张三score的最大值

select stuName,max(score) from grade where stuName='张三';

5.MIN()函数——求一列值的最小值的函数

例如,查询表中张三score的最小值

select stuName,min(score) from grade where stuName='张三';

二、GROUP BY分组查询

group by 常常与聚合函数一起使用

1.与COUNT(*)函数一起使用

例如:查询grade表中的记录条数,并按照姓名分组:

select stuName,count(score) from grade group by stuName;

2.与SUM()函数一起使用

例如:查询表中每个学生的总分:

select stuName,sum(score) from grade group by stuName;

3.与AVG()函数一起使用

例如:查询表中每个学生的平均分:

select stuName,avg(score) from grade group by stuName;

4.与MAX()函数一起使用

例如:查询表中每个学生的最高分:

select stuName,max(score) from grade group by stuName;

注意:当没有用分组时,前面可以加上其他属性;

比如:查询表中张三的最高分,并查询出是哪门课程的最高分:

select stuName,course,max(score) from grade where stuName='张三';

这里可以显示出哪门课程的最高分!

再比如:查询表中所有学生的最高分,并查询是哪门课程的最高分,且以名字分组:

select stuName,course,max(score) from grade group by stuName;

显然这是错误的!!!前面我们可以看到李四的最高分是数学95分,王五是英语89分!

因此,在用group by分组时前面是不能加上其他属性的!

三、group by的其他用法:

1.与HAVING一起使用(对查询结果的一种筛选):

例如:之前查询grade表中各位同学的平均分:

select stuName,avg(score) from grade group by stuName;

现在只需要查询avg(score)>84分的结果出来(可以在末尾加上having avg(score)>84);

select stuName,avg(score) from grade group by stuName having avg(score)>84;

可以看到having有筛选结果的作用!

2.与GROUP_CONCAT一起使用(对查询结果进行汇总,全部展示出来)

例如先查看表t_student:select * from t_student;

查询每个年级有多少个学生:

select gradeName,count(stuName) from t_student group by gradeName;

现在要求查询出每个年级的所有学生姓名(将count换成group_concat即可):

select gradeName,group_concat(stuName) from t_student group by gradeName;

3.与WITH ROLLUP一起使用(最后加入一个总和行)

例如:查询每个年级有多少个学生:

select gradeName,count(stuName) from t_student group by gradeName;

现在要求求出所有年级的总学生数目:

select gradeName,count(stuName) from t_student group by gradeName with rollup;

若是数据类型不是Int型的话,假如是文本型,那么将会将文本都列举出来!

要求列举出所有年级的学生:

select gradeName,group_concat(stuName) from t_student group by gradeName with rollup;

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员的时光 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、聚合函数查询
    • 1.COUNT()函数——用来统计记录的条数;
      • 2.SUM()函数——是求和函数,计算一列值的总和(此列必须是数值型数据);
        • 3.AVG()函数——求一列值的平均值的函数;
          • 4.MAX()函数——求一列值的最大值的函数
            • 5.MIN()函数——求一列值的最小值的函数
            • 二、GROUP BY分组查询
              • 1.与COUNT(*)函数一起使用
                • 2.与SUM()函数一起使用
                  • 3.与AVG()函数一起使用
                    • 4.与MAX()函数一起使用
                    • 三、group by的其他用法:
                      • 1.与HAVING一起使用(对查询结果的一种筛选):
                        • 2.与GROUP_CONCAT一起使用(对查询结果进行汇总,全部展示出来)
                          • 3.与WITH ROLLUP一起使用(最后加入一个总和行)
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档