使用CASE表达式结合AVG函数可实现条件求平均,如SELECT AVG(CASE WHEN region = 'North' THEN amount ELSE NULL END) FROM sales,利用AVG忽略NULL的特性,仅对满足条件的值计算平均值。

在 SQL 中实现条件求平均,通常使用 CASE 表达式 结合 AVG() 函数来完成。你可以在 AVG() 内部通过 CASE 判断某些条件是否满足,只对符合条件的记录进行计算,从而实现“条件求平均”。
假设有一张销售表 sales,包含字段:employee_id、amount、region。你想计算某个地区(比如 'North')的平均销售额,可以这样写:
示例:
SELECT AVG(CASE WHEN region = 'North' THEN amount ELSE NULL END) AS avg_north_amount FROM sales;
说明:当 region = 'North' 时,取 amount 参与平均;否则返回 NULL,而 AVG() 会自动忽略 NULL 值。
如果你只想对满足某条件的数据求平均,也可以直接用 WHERE 过滤,更简洁:
SELECT AVG(amount) AS avg_north_amount FROM sales WHERE region = 'North';
这种方式适用于全局条件。但当你需要在同一查询中对比多个条件的平均值时,CASE 更灵活。
如果你想按员工分别计算他们在不同区域的平均销售额,可以用 GROUP BY 配合条件表达式:
SELECT employee_id, AVG(CASE WHEN region = 'North' THEN amount END) AS avg_north, AVG(CASE WHEN region = 'South' THEN amount END) AS avg_south FROM sales GROUP BY employee_id;
每个员工一行,分别显示其在 North 和 South 区域的平均销售额,不满足条件的为 NULL,不影响 AVG 计算。
基本上就这些。关键是理解:AVG 会跳过 NULL,所以用 CASE 控制哪些值参与计算即可实现条件平均。根据场景选择 WHERE 简单过滤或 CASE 多维度统计。
以上就是SQL 数值函数如何实现条件求平均?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号