T-SQL平均计算

Sve*_*enB 4 sql t-sql average moving-average sql-server-2012

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

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

1)移动平均线:

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

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

2)总体平均值:

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

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

Gar*_*thD 5

SQL-Server 2012支持执行此操作所需的分析功能:

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;
Run Code Online (Sandbox Code Playgroud)

SQL小提琴的简化示例