gpt4 book ai didi

sql - 如何计算 Oracle 数据库中的百分比增加/减少?

转载 作者:行者123 更新时间:2023-12-02 07:44:55 25 4
gpt4 key购买 nike

我有一个 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

请提出方法或解决方案。

谢谢大家。

最佳答案

需要使用Oracle Analytical函数LAG:

您的查询将类似于:

SELECT ((value - lagv)/lagv) * 100
FROM (
SELECT value,
LAG(value) OVER(ORDER BY <ordering_column>) as lagv
FROM table1
);

为了测试我跑了:

WITH t AS (SELECT 1 as rnum,
5 AS value FROM DUAL
UNION
SELECT 2 as rnum,
8 AS value FROM DUAL
UNION
SELECT 3 as rnum,
9 AS value FROM DUAL
)
SELECT ((value - lagv)/lagv) * 100 AS Percentage
FROM (
SELECT value,
LAG(value) OVER(ORDER BY rnum) as lagv
FROM t
);

它返回:

Row  Percentage
1
2 60
3 12.5

由于您需要为我创建了 rnum 列的 LAG 函数指定顺序,因此我假设您的表具有某种您可以使用的排序列(否则您如何知道要比较哪些行?)。

希望这有助于...

编辑:此链接对于了解 Oracle 的 LEAD 和 LAG 函数非常有用。 http://www.oracle-base.com/articles/misc/LagLeadAnalyticFunctions.php

关于sql - 如何计算 Oracle 数据库中的百分比增加/减少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7766212/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com