一个 Postgres 查询,用一行中的值减去下一行中的值

A Postgres query to get subtraction of a value in a row by the value in the next row

我有一个 table 喜欢(我的table):

id | value
=========
1 | 4
2 | 5
3 | 8
4 | 16
5 | 8
...

我需要一个查询让我在每一行上减去下一行:

id | value | diff
=================
1 | 4 | 4 (4-Null)
2 | 5 | 1 (5-4)
3 | 8 | 3 (8-5)
4 | 16 | 8 (16-8)
5 | 8  | -8 (8-16)
...

现在我使用 python 脚本来执行此操作,但我想如果我从此 table.

创建视图会更快

在这种情况下,您应该使用 window functions - LAG()

SELECT id, value, value - LAG(value, 1) OVER (ORDER BY id) AS diff
FROM mytable
ORDER BY id;