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

在 SQL 中实现条件求平均,通常使用 CASE 表达式 结合 AVG() 函数来完成。你可以在 AVG() 内部通过 CASE 判断某些条件是否满足,只对符合条件的记录进行计算,从而实现“条件求平均”。
使用 CASE 配合 AVG 实现条件平均
假设有一张销售表 sales,包含字段:employee_id、amount、region。你想计算某个地区(比如 ‘North’)的平均销售额,可以这样写:
示例:
SELECT AVG(CASE WHEN region = 'North' THEN amount ELSE NULL END) AS avg_north_amountFROM sales;
说明:当 region = ‘North’ 时,取 amount 参与平均;否则返回 NULL,而 AVG() 会自动忽略 NULL 值。
排除特定条件的数据
如果你只想对满足某条件的数据求平均,也可以直接用 WHERE 过滤,更简洁:
arXiv Xplorer
ArXiv 语义搜索引擎,帮您快速轻松的查找,保存和下载arXiv文章。
73 查看详情
SELECT AVG(amount) AS avg_north_amountFROM salesWHERE 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_southFROM salesGROUP BY employee_id;
每个员工一行,分别显示其在 North 和 South 区域的平均销售额,不满足条件的为 NULL,不影响 AVG 计算。
基本上就这些。关键是理解:AVG 会跳过 NULL,所以用 CASE 控制哪些值参与计算即可实现条件平均。根据场景选择 WHERE 简单过滤或 CASE 多维度统计。
以上就是SQL 数值函数如何实现条件求平均?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1088112.html
微信扫一扫
支付宝扫一扫