gpt4 book ai didi

mysql - 使用sql减去列中的两个值

转载 作者:行者123 更新时间:2023-11-29 03:26:41 27 4
gpt4 key购买 nike

我想使用 SQL 查询显示两个不同行的两个值的减法。

这是表结构:

id | Value|
-----------
1 | 20 |
2 | 30 |
3 | 50 |
4 | 70 |
5 | 100 |

输出应该如下所示。

id | Value| Difference |
------------------------
1 | 20 | Null |
2 | 30 | 10 |
3 | 50 | 20 |
4 | 70 | 20 |
5 | 100 | 30 |

最佳答案

我有一个针对 SQL Server 的解决方案,我希望 Oracle 和 MySQL 的解决方案非常相似。

注意 Id 不必是连续的,但我使用它们来对结果进行排序。

设置:

-- drop table dbo.testVals
CREATE TABLE dbo.testVals (
Id INT,
Value INT
)
GO

-- truncate table dbo.testVals
INSERT INTO dbo.testVals (Id, Value)
VALUES (1, 20), (2, 30), (3, 50), (4, 70), (5, 100)
GO

SQL Server 2008 R2 解决方案:

;WITH cte as (
SELECT Id, Value, ROW_NUMBER() OVER (ORDER BY Id) AS RowNo
FROM dbo.testVals
)
SELECT r1.Id, r1.Value, r1.Value - r2.Value
FROM cte r1
LEFT JOIN cte r2 ON r2.RowNo = r1.RowNo - 1
GO

SQL Server 2012 解决方案:(我们有 LAG 和 LEAD 函数)

SELECT Id, Value, Value - LAG(Value, 1, NULL) OVER (ORDER BY Id)
FROM dbo.testVals
GO

Oracle 有 LAG 和 LEAD功能。 MySQL 做 not seem to have他们,所以你应该使用类似于第一个查询的东西。

关于mysql - 使用sql减去列中的两个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35111157/

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