我有一张桌子和这样的价值观
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) `
我希望根据图中的
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/