我有一张桌子和这样的价值观

create table Mytable (Cost money, NKey int, AvgBasedOnkey money)

insert into Mytable(Cost,NKey) values
    (20 ,1) ,
    (7  ,2) ,
    (7  ,2) ,
    (40 ,3) ,
    (40 ,3) ,
    (40 ,3) ,
    (5  ,3) ,
    (6  ,4) ,
    (8  ,4) `

sql - 根据 key 求平均值-LMLPHP

我希望根据图中的AvgBasedOnKey值在NKey列中更新平均成本,例如:
(40 + 40 + 40 + 5) / 4 = 31.25(因为3号键出现了4次)

帮助我提供正确的代码

最佳答案

在SQL Server中,有一种简单的方法可以执行所需的操作。您可以使用AVG函数的窗口版本:

SELECT Cost, NKey, AVG(Cost) OVER (PARTITION BY NKey)
FROM mytable

Demo here

此版本的 AVG 可从SQL Server 2008开始使用。它只是在OVER子句中指定的分区上计算其参数的平均值

关于sql - 根据 key 求平均值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46050716/

10-10 22:33