聚合函数又称为分组函数,常用:

    • COUNT() 计算表中的记录数(行数)。
    • SUM() 计算表中数值列中数据的合计值。
    • AVG() 计算表中数值列中的数据的平均值。
    • MAX() 求出表中任意列中的数据的最大值。
    • MIN() 求出表中任意列中数据的最小值。

    SUM() 和 AVG() 参数类型为数值类型,MAX() 和 MIN() 参数类型可以是日期、数值、字符类型,COUNT() 适用任何类型。

    聚合函数都会忽略 NULL 值。

    1. # 查询公司员工工资的最大值、最小值、平均值、总和。
    2. SELECT
    3. AVG( salary ),
    4. MAX( salary ),
    5. MIN( salary ),
    6. SUM( salary )
    7. FROM
    8. employees;
    9. # 查询员工表中最早入职时间和最晚入职时间的差值。
    10. SELECT
    11. MAX( hiredate ),
    12. MIN( hiredate ),
    13. DATEDIFF(
    14. MAX( hiredate ),
    15. MIN( hiredate ))
    16. FROM
    17. employees;

    可以和 DISTINCT 搭配使用,DISTINCT 必须写在括号中。这是因为在聚合之前先去除重复行

    1. SELECT
    2. SUM( DISTINCT salary ),
    3. SUM( salary )
    4. FROM
    5. employees;
    6. SELECT
    7. COUNT( DISTINCT salary ),
    8. COUNT( salary )
    9. FROM
    10. employees;

    可以使用 COUNT(*) 或者 COUNT(常量值) 可以统计整张表的行数。

    1. SELECT
    2. COUNT( department_id ),
    3. COUNT(*),
    4. COUNT( 1 )
    5. FROM
    6. employees;

    效率:

    MYISAM 存储引擎下,COUNT() 的效率高。
    INNODB 存储引擎下,COUNT(
    ) 和 COUNT(常量值) 的效率差不多,比 COUNT(字段) 效率高。

    和聚合函数一同查询的字段要求是 GROUP BY 的字段。