SQL聚合函数是数据库查询中对一组值执行计算并返回单一值的函数,其中COUNT、SUM、AVG是最基础也最常用的三个聚合函数,在数据统计、报表生成等场景中发挥着重要作用。
一、COUNT函数使用场景
COUNT函数用于统计查询结果中的行数,或者统计某个字段的非空值数量,适合需要统计记录数量的场景。
1. 基础用法
统计表中所有记录数:
-- 统计用户表总记录数 SELECT COUNT(*) AS total_user FROM user;
统计某个字段的非空值数量:
-- 统计有邮箱的用户数量,空值不会被统计 SELECT COUNT(email) AS has_email_user FROM user;
2. 适用场景
- 统计表中总数据量,比如统计订单表总订单数
- 统计符合某个条件的记录数,比如统计状态为已支付的订单数量
- 统计某个字段有有效值的记录数,比如统计填写了手机号的用户数
二、SUM函数使用场景
SUM函数用于对数值类型的字段进行求和计算,只能作用于数值类型的字段,非数值字段使用会报错。
1. 基础用法
计算单个字段的总和:
-- 统计所有订单的总金额 SELECT SUM(order_amount) AS total_amount FROM order_table;
结合条件计算总和:
-- 统计2024年所有已支付订单的总金额 SELECT SUM(order_amount) AS paid_total_amount FROM order_table WHERE order_status = 'paid' AND YEAR(create_time) = 2024;
2. 适用场景
- 计算业务数值总和,比如商品总销量、员工总薪资
- 统计某段时间内的数值累加结果,比如月度总营收、季度总支出
- 结合分组统计每组的总和,比如每个商品的总销量
三、AVG函数使用场景
AVG函数用于计算数值类型字段的平均值,计算时会自动忽略NULL值,本质是SUM结果除以COUNT非空值的结果。
1. 基础用法
计算单个字段的平均值:
-- 计算所有订单的平均金额 SELECT AVG(order_amount) AS avg_amount FROM order_table;
结合分组计算平均值:
-- 计算每个商品的平均评分 SELECT product_id, AVG(score) AS avg_score FROM product_comment GROUP BY product_id;
2. 适用场景
- 计算业务指标的平均值,比如员工平均薪资、商品平均价格
- 统计用户平均行为数值,比如用户平均下单金额、平均访问时长
- 结合分组计算分组维度的平均值,比如每个部门的平均绩效
四、使用注意事项
- COUNT(*)会统计所有行,包括NULL值行;COUNT(字段)只统计该字段非NULL的行
- SUM和AVG只能作用于数值类型字段,对字符串类型字段使用会返回错误
- 三个聚合函数都可以结合WHERE子句过滤数据,也可以结合GROUP BY进行分组聚合
- 如果表中没有符合条件的记录,COUNT会返回0,SUM和AVG会返回NULL
在实际使用中,需要根据业务需求选择合适的聚合函数,比如统计数量用COUNT,计算总和用SUM,计算平均值用AVG,三者也可以组合使用,满足更复杂的统计需求。