Mysql 温故知新系列「聚合函数」

「这是我参与11月更文挑战的第 15 天,活动详情查看:2021最后一次更文挑战

聚合函数

一般情况下,我们存储在 DB 表中的,都是单条的数据记录,但有时候,又需要聚合这些数据来做分析处理(别杠可以在后台做,那样性能会很差)

根据定义,聚合函数对一组值执行计算并返回单个值

mysql 提供了许多的聚合函数,比如 avg, count, sum, max, min,除 count 之外,其他的聚合函数都会忽略 null

如果有需要,我们可以使用 where 条件先对数据进行过滤,然后再使用聚合函数进行操作

avg

avg 用于计算一组数据的平均值,以手上现有的表数据为例:

image.png

我们统计 amount 的平均数量

image.png

由图可知,很多记录的 amount = 1 导致平均值被拉下去,那么我们忽略掉 amount = 1 的记录,看其余数据的平均值又是多少

image.png

由这里可以看出,avg 在做求平均值的时候,是在 where 条件过滤之后的结果上进行的操作

count

count 返回表中的函数,常规的用法由 count(*)count(1)

image.png

image.png

同样的的测试,count 也是在 where 过滤后的结果上做总计

这里查找了一部分资料:

基于InnoDB引擎

count(*)、count(主键id)和count(1) 都表示返回满足条件的结果集的总行数

count(字段),则表示返回满足条件的数据行里面,参数“字段”不为NULL的总个数。

按照效率排序的话,count(字段)<count(主键id)<count(1)≈count(*)

sum

表示对某个字段的数据进行求和,我们常规用于对数值类型的数据求和

image.png

image.png

max

选取一组记录中,字段值最大的那个

image.png

在常规的表设计中,我们都是使用的自增主键,我们可以通过如下的方式定位到当前表最新的一条数据记录

1
sql复制代码select max(id) from table

min

选取一组记录中,字段值最小的那个

image.png


在聚合函数的单独使用中,都是返回单个的数值类型的结果

但我们可以配合分组查询以及联表查询发挥出更加强大的威力,比如, count + group by 直接定位出重复的记录,这些知识点会在后续的文章中补上

原创文章,未经允许,禁止转载

– by 安逸的咸鱼

本文转载自: 掘金

开发者博客 – 和开发相关的 这里全都有

0%