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