如何计算Oracle数据库的增加/减少百分比?
我有一个包含 3 行值的表:
Row1 : 5
Row2 : 8
Row3 : 9
我希望计算 Row2 与 Row1、Row3 与 Row2 相比的增加或减少百分比,所以我将拥有此表: 计算%的公式为:[Row(n+1) - Row(n)] / Row(2)
Value Percentage
Row1 : 5 -
Row2 : 8 60% (increase compared to Row1) | (8-5)/5
Row3 : 9 12.5%(increase compared to Row2)| (9-8)/8
请建议方法或解决方案。
谢谢大家。
I have a table with 3 rows contain values :
Row1 : 5
Row2 : 8
Row3 : 9
I wish to calculate the percentage of increase or decrease of : Row2 compared to Row1 , Row3 to Row2 so i would have this table :
The formula to calculate % is : [Row(n+1) - Row(n)] / Row(2)
Value Percentage
Row1 : 5 -
Row2 : 8 60% (increase compared to Row1) | (8-5)/5
Row3 : 9 12.5%(increase compared to Row2)| (9-8)/8
Please suggest the way or a solution .
Thanks all.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您需要使用 Oracle 分析函数 LAG:
您的查询将类似于:
为了测试我运行:
它返回:
由于您需要为 LAG 函数指定顺序,所以我创建了 rnum 列,我假设您的表有某种排序您可以使用排序列(否则您如何知道要比较哪些行?)。
希望这会有所帮助...
编辑:此链接对于了解 Oracle 的 LEAD 和 LAG 功能非常有用。 http://www.oracle-base.com/articles/misc/LagLeadAnalyticFunctions.php
You need to use the Oracle Analytical function LAG:
Your query will look something like:
To test I ran:
It returned:
As you need to specify an order for the LAG function I have created the rnum column, I assume your table has some sort of ordering column you can use, (otherwise how do you know which rows to compare?).
Hope this helps...
EDIT: This link is pretty useful for learning about Oracle's LEAD and LAG functions. http://www.oracle-base.com/articles/misc/LagLeadAnalyticFunctions.php