T-SQL平均值计算

4
我想在我的select语句中加入对一组数值列进行两种平均计算的功能。
请参考此链接,查看包含所需输出计算的简化表结构:Pastebin 1) 移动平均:
Month1 = 该月value1-column的值,Month2 = 如果sum等于0,则写入0,否则为Month1和Month2的平均值,以此类推。
因此,对于每个产品,我想要一年内每个月的移动平均数。我已经在Excel中设置好了,但无法将其转换到SQL中。
2) 总体平均值:
对于每个产品,计算所有年份的平均值,并将计算出的值复制到该产品的所有行中。
希望你能帮我解决这个问题。看起来我需要一个过程,但也许只是一个简单的语句。
1个回答

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;

SQL Fiddle上的简化示例


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接