我想在select语句中为一堆值列合并两个平均值计算。
请参阅此链接以了解我的简化表格结构,包括所需的输出计算:Pastebin
1)移动平均线:
Month1 =该月份value1-column的值,Month2 =如果sum == 0则写入0,否则为avg(Month1和Month2),依此类推。
因此,对于每种产品,我都希望一年内每个月的移动平均值。 我在Excel中设置了这个,但我无法将表达式转移到sql。
2)整体平均值:
对于每种产品,计算所有年份的平均值,并将计算值复制到该产品的所有行。
我希望你能帮我解决这个问题。看起来我需要一个程序,但也许这只是一个简单的陈述。
答案 0 :(得分:5)
SQL-Server 2012支持执行此操作所需的analytic functions:
SELECT Product,
Month,
Year,
Value,
AVG_YTD = AVG(Value) OVER(PARTITION BY Year ORDER BY Month),
AVG_Year = AVG(Value) OVER(PARTITION BY Product, Year),
AVG_Overall = AVG(Value) OVER(PARTITION BY Product)
FROM T;