问题描述
我有一张像(mytable)这样的桌子:
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 脚本来执行此操作,但我想如果我从该表创建视图会更快。
解决方法
在这种情况下,您应该使用 window functions - LAG()
:
SELECT id,value,value - LAG(value,1) OVER (ORDER BY id) AS diff
FROM mytable
ORDER BY id;