一、count函数
  • 确定表中行的数目或符合特点条件的行的数目
  • 语法格式:
    • count(*);  //没有order by时,返回表中总的行数。有order by时,返回指定字段的行数。空值(NULL)的行也显示
    • count(字段名);   //返回指定字段的总行数,空值(NULL)的行会被忽略

演示案例

  • 返回customers表中客户的总数

MySQL聚合函数(COUNT、AVG、MIN、MAX、SUM)_min

  • 只对具有电子邮件地址的客户计数

MySQL聚合函数(COUNT、AVG、MIN、MAX、SUM)_min_02

演示案例

  • 查询child表的child_id列:
select child_id from child;

MySQL聚合函数(COUNT、AVG、MIN、MAX、SUM)_count_03

  • 去除重复行:
select distinct child_id from child;

MySQL聚合函数(COUNT、AVG、MIN、MAX、SUM)_avg_04

  • 查看不重复的行有多少行:
select count(distinct child_id) from child;

MySQL聚合函数(COUNT、AVG、MIN、MAX、SUM)_count_05

二、sum函数
  • 功能:返回指定字段的值总和
  • sum会忽略值为NULL的行

演示案例

  • 合计每项物品的总价,得出总的订单金额

MySQL聚合函数(COUNT、AVG、MIN、MAX、SUM)_max_06

三、avg函数
  • 功能:通过返回的行数和每一行数据的和,求出指定列数据的平均值
  • 注意事项:
    • avg函数使用时,其参数为要计算的列名称。如果要得到多个列的多个平均值,则需要在每一列上使用avg函数
    • avg()函数忽略值为NULL的行

演示案例

  • 计算products表中所有产品的平均价格

MySQL聚合函数(COUNT、AVG、MIN、MAX、SUM)_min_07

  • 仅计算vend_id为1003的产品的平均价格

MySQL聚合函数(COUNT、AVG、MIN、MAX、SUM)_max_08

四、max函数
  • 功能:返回指定列中的最大值
  • 注意事项:
    • max不仅适用于查找数值类型,也可用于字符类型
    • max()函数会忽略值为NULL的行

演示案例

  • 返回价格最大的商家

MySQL聚合函数(COUNT、AVG、MIN、MAX、SUM)_avg_09

五、min函数
  • 功能:返回指定列中的最小值
  • 注意事项:
    • min()不仅适用于查找数值类型,也可用于字符类型
    • min()函数会忽略值为NULL的行

演示案例

  • 返回价格最小的商家

MySQL聚合函数(COUNT、AVG、MIN、MAX、SUM)_avg_10

六、聚集不同值(distinct关键字)
  • 所有的聚合函数都是对所有的行进行操作,默认为ALL参数(ALL参数为默认行为)
  • DISTINCT可以在查询中只包含不同的值
  • 注意事项:
    • 如果指定列名,则distinct只能用于count()。distinct不能用于count(*),因此不允许使用count(distinct),否则会产生错误。
    • 类似的,distinct必须使用列名,不能用于计算或表达式
    • 将distinct用于min和max:虽然distinct从技术上可用于这两个函数,但这样做实际上没有价值,一个列中最小值和最大值不管是否包含不同值都是唯一且相同的

演示案例

  • 下面返回特定供应商提供的产品的平均价格,但是使用了distinct参数,与上面avg函数中的演示案例价格提高了(因为有多个物品具有相同的较低价格)

MySQL聚合函数(COUNT、AVG、MIN、MAX、SUM)_avg_11

七、聚合函数的组合使用
  • 我们可以将聚合函数组合进行使用

演示案例

  • 下面的演示案例返回products表中物品的数目,产品价格的最高、最低以及平均值

MySQL聚合函数(COUNT、AVG、MIN、MAX、SUM)_count_12