MySQL聚合查询
2021/9/20 19:29:02
本文主要是介绍MySQL聚合查询,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 1 聚合函数
- 1.1 count
- 1.2 sum
- 1.3 avg
- 1.4 max
- 1.5 min
- 2 分组查询
- 2.1 group by
- 2.2 having
聚合查询是更复杂的查询语句,将若干行给合并起来,
1 聚合函数
- count函数可以查询任何类型的数据,但是其他函数只能查询数字,因为它要做基本的数学计算,不是数字就没有意义。
聚合函数 | 说明 |
---|---|
count | 返回查询到的数据的数量 |
sum | 返回查询到的数据的总和,不是数字没有意义 |
avg | 返回查询到的数据的 平均值,不是数字没有意义 |
max | 返回查询到的数据的 最大值,不是数字没有意义 |
min | 返回查询到的数据的 最小值,不是数字没有意义 |
这一小节所有的语句执行都是在student这个表中进行操作,
1.1 count
select count(*) from student;
相当于先执行select * 基础查询,再根据select * 返回的结果,进行计数。
Q:若某个数据为NULL,那么count能否计上该数?
不难发现,此时count并没有记录NULL的数。所以我们需要注意,如果count指定的某列数据值为NULL,则不会计入到最终计数中;
1.2 sum
select sum(math) from student;
计算student表中所有学生数学成绩的总和。
1.3 avg
select avg(math) from student;
计算student表中数学成绩的平均分。
1.4 max
select max(math) from student;
计算student表中数学成绩中的最高分。
1.5 min
select min(math) from student;
计算student表中数学成绩中的最低分。
2 分组查询
2.1 group by
分组聚合指的是,根据某个列的值进行分组,把值相同的行分到一组去,然后再针对对每个组分别执行聚合函数。
实际开发中,我们可能不需要所有数据聚合在一起,我们需要分组聚合,那么就可是使用gruop by。
我们先创建一张表,这一小节所有的语句执行都是在emp这个职工表中进行操作,
Q:查询每种岗位的最高薪资,最低薪资以及平均薪资的情况,如何操作?
显然,单纯使用聚合函数没有办法对每种岗位进行分类,它只能查询所有人的情况,所以我们需要先根据 role 这一列数据进行分组。
select column1, sum(column2), .. from table group by column1;
该语句会把相同的role进行分组,再对各组分别执行max,min,avg聚合函数。
2.2 having
Q:查询平均薪资在150以上的岗位信息,如何操作?
- 看到条件筛选,大部分同学应该都会想到where,where确实能标傲世条件,但是要注意的是,此处是不能使用where的。where的条件筛选是针对当前表中的原始数据(聚合前的数据)进行筛选,而现在我们希望对聚合后的数据进行筛选。
- 针对聚合后的数据进行筛选,我们可以使用having子句,having的语法和where中的写法是一样的,只是换了个关键字。
这篇关于MySQL聚合查询的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-25如何部署MySQL集群资料:新手入门教程
- 2024-12-24MySQL集群部署资料:新手入门教程
- 2024-12-24MySQL集群资料详解:新手入门教程
- 2024-12-24MySQL集群部署入门教程
- 2024-12-24部署MySQL集群学习:新手入门教程
- 2024-12-24部署MySQL集群入门:一步一步搭建指南
- 2024-12-07MySQL读写分离入门:轻松掌握数据库读写分离技术
- 2024-12-07MySQL读写分离入门教程
- 2024-12-07MySQL分库分表入门详解
- 2024-12-07MySQL分库分表入门指南