SQL 数值函数如何实现条件求平均?

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

SQL 数值函数如何实现条件求平均?

sql 中实现条件求平均,通常使用 CASE 表达式 结合 AVG() 函数来完成。你可以在 AVG() 内部通过 CASE 判断某些条件是否满足,只对符合条件的记录进行计算,从而实现“条件求平均”。

使用 CASE 配合 AVG 实现条件平均

假设有一张销售表 sales,包含字段:employee_idamountregion。你想计算某个地区(比如 ‘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 过滤,更简洁:

SQL 数值函数如何实现条件求平均?

腾讯智影-AI数字人

基于AI数字人能力,实现7*24小时AI数字人直播带货,低成本实现直播业务快速增增,全天智能在线直播

SQL 数值函数如何实现条件求平均?73

查看详情 SQL 数值函数如何实现条件求平均?

 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 多维度统计。

上一篇
下一篇
text=ZqhQzanResources