T-SQL平均计算

时间:2013-03-06 08:07:58

标签: sql tsql sql-server-2012 average moving-average

我想在select语句中为一堆值列合并两个平均值计算。

请参阅此链接以了解我的简化表格结构,包括所需的输出计算:Pastebin

1)移动平均线:

Month1 =该月份value1-column的值,Month2 =如果sum == 0则写入0,否则为avg(Month1和Month2),依此类推。

因此,对于每种产品,我都希望一年内每个月的移动平均值。 我在Excel中设置了这个,但我无法将表达式转移到sql。

2)整体平均值:

对于每种产品,计算所有年份的平均值,并将计算值复制到该产品的所有行。

我希望你能帮我解决这个问题。看起来我需要一个程序,但也许这只是一个简单的陈述。

1 个答案:

答案 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;

<强> Simplified Example on SQL Fiddle