You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server查询如何将不同WHERE条件对应的平均值输出为新列

SQL Server实现多条件平均值合并输出方案

你可以使用条件聚合逻辑实现需求,无需执行两次查询,参考SQL如下:

SELECT
    a.benefit,
    AVG(CASE WHEN b.comp = 0 THEN a.weight END) AS avg_weight_when_comp_0,
    AVG(CASE WHEN b.comp = 1 THEN a.weight END) AS avg_weight_when_comp_1
FROM
    Segment_Responses AS a
INNER JOIN 
    Segment_Descriptors AS b ON a.resp_id = b.resp_id
-- 如果comp字段存在0/1以外的取值,可打开下方注释过滤无效数据
-- WHERE b.comp IN (0,1)
GROUP BY
    a.benefit

逻辑说明

  • 移除了原SQL中针对comp的WHERE过滤条件,保留所有comp为0、1的有效记录
  • 用CASE WHEN做分支判断,仅返回对应comp取值的weight值,不符合条件的记录返回NULL,AVG聚合函数会自动忽略NULL值,刚好实现分场景统计平均值的需求
  • 如果需要把无匹配记录的空值替换为0,可以将计算逻辑包裹在ISNULL()函数中,示例:ISNULL(AVG(CASE WHEN b.comp = 0 THEN a.weight END), 0) AS avg_weight_when_comp_0

内容的提问来源于stack exchange,提问作者Allen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 07:12:05