聚合函数又称为分组函数,常用:
- COUNT() 计算表中的记录数(行数)。
 - SUM() 计算表中数值列中数据的合计值。
 - AVG() 计算表中数值列中的数据的平均值。
 - MAX() 求出表中任意列中的数据的最大值。
 - MIN() 求出表中任意列中数据的最小值。
 
SUM() 和 AVG() 参数类型为数值类型,MAX() 和 MIN() 参数类型可以是日期、数值、字符类型,COUNT() 适用任何类型。
聚合函数都会忽略 NULL 值。
# 查询公司员工工资的最大值、最小值、平均值、总和。SELECTAVG( salary ),MAX( salary ),MIN( salary ),SUM( salary )FROMemployees;# 查询员工表中最早入职时间和最晚入职时间的差值。SELECTMAX( hiredate ),MIN( hiredate ),DATEDIFF(MAX( hiredate ),MIN( hiredate ))FROMemployees;
可以和 DISTINCT 搭配使用,DISTINCT 必须写在括号中。这是因为在聚合之前先去除重复行。
SELECTSUM( DISTINCT salary ),SUM( salary )FROMemployees;SELECTCOUNT( DISTINCT salary ),COUNT( salary )FROMemployees;
可以使用 COUNT(*) 或者 COUNT(常量值) 可以统计整张表的行数。
SELECTCOUNT( department_id ),COUNT(*),COUNT( 1 )FROMemployees;
效率:
MYISAM 存储引擎下,COUNT() 的效率高。
INNODB 存储引擎下,COUNT() 和 COUNT(常量值) 的效率差不多,比 COUNT(字段) 效率高。
和聚合函数一同查询的字段要求是 GROUP BY 的字段。
