Sql server TSQL组和过去3年的平均值
我想使用tsql查找按年份分组的结果及其过去3年的平均金额,精确到小数点后2位Sql server TSQL组和过去3年的平均值,sql-server,performance,tsql,Sql Server,Performance,Tsql,我想使用tsql查找按年份分组的结果及其过去3年的平均金额,精确到小数点后2位 data Year amount 2017 100 2017 200 2016 300 2016 100 2015 200 2015 200 2014 100 2013 100 expected result year amount 2017 183.33 2016 166.66 2015 13
data
Year amount
2017 100
2017 200
2016 300
2016 100
2015 200
2015 200
2014 100
2013 100
expected result
year amount
2017 183.33
2016 166.66
2015 133.33
2014 100
2013 100
使用从子查询中获取过去三年的平均值,该子查询平均该年的金额
select
year
, amount = avg(amount) over (order by year rows 2 preceding)
from (
select year, amount = avg(convert(decimal(19,2),amount))
from t
group by year
) as s
order by year desc
rextester演示:
返回:
+------+------------+
| year | amount |
+------+------------+
| 2017 | 183.333333 |
| 2016 | 166.666666 |
| 2015 | 133.333333 |
| 2014 | 100.000000 |
| 2013 | 100.000000 |
+------+------------+
你尝试了什么?奇怪的预期结果。你似乎错过了你迄今为止所做的尝试。为什么2015年的价值是133.33?不是应该是200吗?