「这是我参与11月更文挑战的第 15 天,活动详情查看:2021最后一次更文挑战」
聚合函数
一般情况下,我们存储在 DB 表中的,都是单条的数据记录,但有时候,又需要聚合这些数据来做分析处理(别杠可以在后台做,那样性能会很差)
根据定义,聚合函数对一组值执行计算并返回单个值
mysql 提供了许多的聚合函数,比如 avg, count, sum, max, min
,除 count
之外,其他的聚合函数都会忽略 null
如果有需要,我们可以使用 where 条件先对数据进行过滤,然后再使用聚合函数进行操作
avg
avg
用于计算一组数据的平均值,以手上现有的表数据为例:
我们统计 amount
的平均数量
由图可知,很多记录的 amount = 1
导致平均值被拉下去,那么我们忽略掉 amount = 1
的记录,看其余数据的平均值又是多少
由这里可以看出,avg
在做求平均值的时候,是在 where
条件过滤之后的结果上进行的操作
count
count
返回表中的函数,常规的用法由 count(*)
和 count(1)
同样的的测试,count
也是在 where
过滤后的结果上做总计
这里查找了一部分资料:
基于InnoDB引擎
count(*)、count(主键id)和count(1)
都表示返回满足条件的结果集的总行数
count(字段)
,则表示返回满足条件的数据行里面,参数“字段”不为NULL的总个数。按照效率排序的话,count(字段)<count(主键id)<count(1)≈count(*)
sum
表示对某个字段的数据进行求和,我们常规用于对数值类型的数据求和
max
选取一组记录中,字段值最大的那个
在常规的表设计中,我们都是使用的自增主键,我们可以通过如下的方式定位到当前表最新的一条数据记录
1 | sql复制代码select max(id) from table |
min
选取一组记录中,字段值最小的那个
在聚合函数的单独使用中,都是返回单个的数值类型的结果
但我们可以配合分组查询以及联表查询发挥出更加强大的威力,比如, count + group by
直接定位出重复的记录,这些知识点会在后续的文章中补上
原创文章,未经允许,禁止转载
– by 安逸的咸鱼
本文转载自: 掘金