Mysql聚合函数使用

  • 什么是聚合函数?
  • Mysql聚合函数
  • 1、COUNT()函数
  • 2、SUM()函数
  • 3、AVG()函数
  • 4、MAX()函数
  • 5、MIN()函数


什么是聚合函数?

计算数据表中的记录行数的总数、计算某个字段列下数据的总和,以及计算表中某个字段下的最大值、最小值或者平均值。

Mysql聚合函数

函数

作用

AVG()

返回某列的平均值

COUNT()

返回某列的行数

MAX()

返回某列的最大值

MIN()

返回某列的最小值

SUM()

返回某列的和

1、COUNT()函数

COUNT()函数统计数据表中包含的记录行的总数,或者根据查询结果返回列中包含的数据行数。

  • COUNT(*) 计算表中的总行数,不管某列是否有数值或者为空行。
select count(*) as stu_num from students;
  • COUNT(字段名) 计算指定列下总的行数,计算时将忽略空值的行。
select count(c_email) as email_num from students;
#如果表中有5个student只有3个有email,其他email是NULL,那么是NULL的记录没有别count()函数计算。
  • 如何用COUNT()函数和GROUP BY关键字一起来计算不同分组中的记录总数
#在orderitems表中,使用count()函数统计不同订单号中订购的水果种类
#o_num订单号;f_id水果种类id;orderitems 订单表
select o_num count(f_id) from orderitems group by o_num;
2、SUM()函数
  • SUM()是一个求总和的函数,返回指定的列值的总和
#在orderitems表中查询30005号订单一共购买底的水果总量
#quantity 水果质量;items_total 取得别名 
select sum(quantity) as items_total from orderitems where o_num = 30005;
  • SUM()可以与GROUP BY一起使用,来计算每个分组的总和
#在orderitems表中,使用SUM()函数统计不同订单中订购的水果的总量
select o_num,sum(quantity) as items_total from orderitems group by o_num;

“SUM()函数在计算时,忽略列值为NULL的行”

3、AVG()函数
  • AVG()函数通过计算返回的行数和每一行数据的和,求得指定列数据的平均值
#在fruits表中,查询s_id=103的供应商的水果价格的平均值
select avg(f_price) as avg_price from fruits where s_id = 103;
  • AVG()可以与GROUP BY一起使用,来计算每个分组的平均值
#在fruits表中,查询每一个供应商的水果价格的平均值
select s_id,AVG(f_price) as avg_price from fruits group by s_id;

这个方法很有用,比如求不同班级学生成绩的平均值、求不同部门工人的平均工资、求各地的年平均气温等;

4、MAX()函数
  • MAX()返回指定列中的最大值
#在fruits表中查找市场上的价格最高的水果值
select max(f_price) as max_price from fruits;
  • MAX()也可以和GROUP BY关键字一起使用,求每个分组中的最大值。
#在fruits表中查找不同供应商提供的价格最高的水果值
select s_id,max(f_price) as max_price from fruits group by s_id;
  • MAX()函数不仅适用于查找数值类型,也可应用于字符类型
#在fruits表中查找f_name 的最大值
select max(f_name) from fruits;

可以返回任意列中的最大值,在对字符串类型数据进行比较时,安装字符的ASCII码的大小进行比较

5、MIN()函数
  • MIN()返回查询列中的最小值
#在fruits表中查找市场上价格最低的水果值
select min(f_price) as min_price from fruits;
  • MIN()也可以和GROUP BY关键字一起使用,求出每个分组中的最小值。
#在fruits表中查找不同供应商提供的价格最低的水果值
#s_id 供应商的id
select s_id,min(f_price) as min_price from fruits group by s_id;

MIN() 和 MAX()类似,不仅使用于查找数值类型,也可应用于字符类型。