我需要找到越来越多的价值。我有这样的专栏
我必须按名称值进行分组,并考虑每5个值来计算增加百分比。 例如,我将考虑前5个值,增加平均值将计算为第5个值,然后是第6个,依此类推。下面是相同的例子。
我可以使用formal = =((((I5+I6+I7+I8+I9)/5)-I9)/I9)*100)
在EXCEL中实现,但是在SQL中我试图创建一个游标但是无法实现增加值。
因此感谢任何帮助。
答案 0 :(得分:2)
我认为你应该尝试这样的事情(但请下次以正确的方式发布您的样本数据和所需的输出。请参阅浏览StackOverflow):
SELECT ID, NAME, VALUE
,(AVG(0.0+VALUE) OVER ( ORDER BY ID ROWS 4 PRECEDING) - VALUE) / VALUE *100 AS INCR_AVG
FROM TAB1
输出:
ID NAME VALUE INCR_AVG
----------- ---------- ----------- ---------------------------------------
1 ABC 486 0.000000
2 ABC 360 17.500000
3 ABC 174 95.402200
4 ABC 283 15.106000
5 ABC 386 -12.487000
6 ABC 154 76.233700
7 ABC 589 -46.146000
8 ABC 458 -18.340600
9 ABC 658 -31.762900
10 ABC 456 1.535000