『MySQL』汇总数据
聚集函数
- 聚集函数:运行在行组上,计算和返回单个值的函数。
- 标准偏差:MySQL还支持一系列的标准偏差聚集函数,此处未涉及。
函数 | 说明 |
---|---|
AVG() | 返回某列的平均值 |
COUNT() | 返回某列的行数 |
MAX() | 返回某列的最大值 |
MIN() | 返回某列的最小值 |
SUM() | 返回某列值之和 |
AVG()函数
1 | -- 返回特定供应商所提供产品的平均价格 |
只用于单个列:
AVG()
只能用来确定特定数值列的平均值,而且列名必须作为函数参数给出。为了获得多个列的平均值,必须使用多个
AVG()
函数。NULL值:
AVG()
函数忽略列值为NULL
的行。
COUNT()函数
COUNT()
函数有两种使用方式:- 使用
COUNT(*)
对表中行的数目进行计数,不管表列中包含的是空值(NULL
)还是非空值; - 使用
COUNT(column)
对特定列中具有值的行进行计数,忽略NULL
值。
- 使用
- NULL值:如果指定列名,则指定列的值为空的行被
COUNT()
函数忽略,但如果COUNT()
函数中用的是*
号,则不忽略。
1 | -- 返回customers表中客户的总数 |
MAX()函数
对非数值数据使用MAX():虽然
MAX()
一般用来找出最大的数值或日期值,但MySQL允许将它用来返回任意列中的最大值,包括返回文本列中的最大值。在用于文本数据时,如果数据按相应的列排序,则
MAX()
返回最后一行。NULL值:
MAX()
函数忽略列值为NULL
的行。
1 | -- 返回products表中最贵的物品的价格 |
MIN()函数
MIN()
函数与MAX()
函数类似。对非数值数据使用MAX():虽然
MAX()
一般用来找出最小的数值或日期值,但MySQL允许将它用来返回任意列中的最小值,包括返回文本列中的最小值。在用于文本数据时,如果数据按相应的列排序,则
MIN()
返回最前面的行。NULL值:
MIN()
函数忽略列值为NULL
的行。
1 | -- 返回products表中最便宜物品的价格 |
SUM()函数
- 在多个列上进行计算:利用标准的算术操作符,所有聚集函数都可用来执行多个列上的计算。
- NULL值:
SUM()
函数忽略列值为NULL
的行。
1 | -- 检索所订购物品的总数(所有quantity值之和) |
聚集不同值
MySQL5及后期版本:聚集函数的
DISTINCT
的使用,已经被添加到MySQL 5.0.3
中,MySQL 4.x
中不能正常运行。以上5个聚集函数都可以如下使用:
- 对所有的行执行计算,指定
ALL
参数或不给参数(因为ALL
时默认行为); - 只包含不同的值,指定
DISTINCT
参数。
- 对所有的行执行计算,指定
注意:如果指定列名,则
DISTINCT
只能用于COUNT(列名)
。DISTINCT
不能用于COUNT(*)
。类似的,DISTINCT
必须使用列名 ,不能用于计算或表达式。将DISTINCT用于MAX()和MAX():虽然
DISTINCT
从技术上可以用于MIN()
和MAX()
,但这样做实际没有价值。一个列中的最小值和最大值不管是否包含不同值都是相同的。
1 | -- 返回特定供应商提供的产品的平均价格,只考虑各个不同的价格 |
组合聚集函数
- 取别名:在指定别名以包含某个聚合函数的结果时,不应该使用表中实际的列名。虽然这样做并非不合法,但使用唯一的名字会使你的SQL更易于理解和使用(以及将来容易排除故障)。
1 | SELECT COUNT(*) AS num_items, |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 KissSheep's Blog!
评论