MySQL聚合函数(COUNT、AVG、MIN、MAX、SUM)
原创
©著作权归作者所有:来自51CTO博客作者董哥的黑板报的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、count函数
- 确定表中行的数目或符合特点条件的行的数目
-
语法格式:
-
count(*); //没有order by时,返回表中总的行数。有order by时,返回指定字段的行数。空值(NULL)的行也显示
-
count(字段名); //返回指定字段的总行数,空值(NULL)的行会被忽略
演示案例
演示案例
select child_id from child;
select distinct child_id from child;
select count(distinct child_id) from child;
二、sum函数
-
功能:返回指定字段的值总和
- sum会忽略值为NULL的行
演示案例
三、avg函数
-
功能:通过返回的行数和每一行数据的和,求出指定列数据的平均值
-
注意事项:
- avg函数使用时,其参数为要计算的列名称。如果要得到多个列的多个平均值,则需要在每一列上使用avg函数
- avg()函数忽略值为NULL的行
演示案例
四、max函数
-
功能:返回指定列中的最大值
-
注意事项:
- max不仅适用于查找数值类型,也可用于字符类型
- max()函数会忽略值为NULL的行
演示案例
五、min函数
-
功能:返回指定列中的最小值
-
注意事项:
- min()不仅适用于查找数值类型,也可用于字符类型
- min()函数会忽略值为NULL的行
演示案例
六、聚集不同值(distinct关键字)
- 所有的聚合函数都是对所有的行进行操作,默认为ALL参数(ALL参数为默认行为)
- DISTINCT可以在查询中只包含不同的值
-
注意事项:
- 如果指定列名,则distinct只能用于count()。distinct不能用于count(*),因此不允许使用count(distinct),否则会产生错误。
- 类似的,distinct必须使用列名,不能用于计算或表达式
- 将distinct用于min和max:虽然distinct从技术上可用于这两个函数,但这样做实际上没有价值,一个列中最小值和最大值不管是否包含不同值都是唯一且相同的
演示案例
- 下面返回特定供应商提供的产品的平均价格,但是使用了distinct参数,与上面avg函数中的演示案例价格提高了(因为有多个物品具有相同的较低价格)
七、聚合函数的组合使用
演示案例
- 下面的演示案例返回products表中物品的数目,产品价格的最高、最低以及平均值