2026-04-05 13:39:56
AVG()函数是SQL中用于计算指定列平均值的核心函数,在数据分析中应用广泛。以下是其详细用法说明:


计算整列平均值:
SELECT AVG(salary) FROM employees;
带条件计算:
SELECT AVG(salary) FROM employees WHERE department = 'Sales';计算销售部门员工的平均工资
与GROUP BY结合使用可计算各组的平均值:
SELECT department, AVG(salary) FROM employees GROUP BY department;2. NULL值处理AVG()默认忽略NULL值,但可通过以下方式处理:
COALESCE函数:
SELECT AVG(COALESCE(salary, 0)) FROM employees;将NULL视为0计算
CASE语句:
SELECT AVG(CASE WHEN salary IS NULL THEN 0 ELSE salary END) FROM employees;返回类型取决于输入列,可通过CAST/CONVERT控制:
SELECT CAST(AVG(salary) AS DECIMAL(10, 2)) FROM employees;将结果转为10位总长度、2位小数的十进制数
4. 计算不同值平均与DISTINCT结合可计算唯一值的平均:
SELECT AVG(DISTINCT salary) FROM employees;5. 多列去重计算通过子查询实现多列去重后计算:
SELECT AVG(salary) FROM (SELECT DISTINCT department, salary FROM employees) AS distinct_salaries;NULL处理:
默认忽略NULL值
全NULL列返回NULL
需显式处理NULL时建议使用COALESCE或CASE
性能考虑:
DISTINCT操作会增加计算开销
大数据量时慎用多列DISTINCT
数据库差异:
不同数据库对数据类型的处理可能不同
建议查阅具体数据库文档
结果精度:
整数列计算可能返回浮点数
需控制精度时使用显式转换
薪资分析:
-- 各部门平均工资对比SELECT department, AVG(salary) FROM employees GROUP BY department ORDER BY AVG(salary) DESC;销售数据:
-- 各产品平均销售额SELECT product_id, AVG(amount) FROM sales GROUP BY product_id;成绩统计:
-- 各班级平均分SELECT class_id, AVG(score) FROM student_scores GROUP BY class_id;去重统计:
-- 不同价格产品的平均销量SELECT AVG(DISTINCT price) FROM products;AVG()函数是SQL数据分析的基础工具,掌握其各种用法可显著提升数据处理效率。实际应用中需根据具体需求选择合适的计算方式,特别注意NULL值处理和性能优化。