我与下面结构的SQL Server表:计算加权平均值与标准SQL
model term transaction str_weight
750i 36 L 2
750i 39 L 3
750i 48 D 3
750i 39 L 3
750i 48 L 3
我需要通过交易在SQL来计算加权平均值,并在下面的格式显示出来:
model L_Term D_Term D_L_Term
750i 48 36 48 (not accurate values)
这是我到目前为止所尝试的,它给我不正确的结果。 任何人都可以指出我做错了什么?任何更好的方式来做这些重量平均在SQL?
select model
, sum(str_weight) as TotalWeight
, sum(case when [transaction] = 'D' then Term*str_weight end)/sum(case when [transaction] = 'D' then str_weight else 0.0 end) as Weighted_D_Term
, sum(case when [transaction] = 'L' then Term*str_weight end)/sum(case when [transaction] = 'L' then str_weight else 0.0 end) as Weighted_L_Term
, sum(case when [transaction] = 'D' OR [transaction] = 'L' then Term*str_weight end)/sum(case when [transaction] = 'D' OR [transaction] = 'L' then str_weight else 0.0 end) Weighted_DL_Term
from model_weights
group by model
感谢, 乙
您的查询语法错误。你提供的结果是不正确的。我编辑了你的问题。也请提供所需的结果集,以便我们提供答案。 – FLICKER
你的逻辑对我来说看起来是正确的。你可以设置一个SQL小提琴吗? –
@GordonLinoff感谢您的回复。为愚蠢的问题道歉,我如何在这里设置一个SQL小提琴? – Bee