微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决一个 Postgres 查询,用下一行中的值减去一行中的值

我有一张像(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;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。