gpt4 book ai didi

sql - 减去表中同一列的两条记录

转载 作者:行者123 更新时间:2023-11-29 11:57:36 25 4
gpt4 key购买 nike

我正在使用 PostgreSQL,我想减去同一个表的两条记录并在同一个查询中使用结果。

这是表格:

分数

6
8
9


结果

6
2
1

我想做的事情:

Result = Score(i) - Score(i-1)

最后我想要这些结果的总和。 sum(result) 在我的例子中必须是 9。

最佳答案

您需要一些方法来确定 score 中行的顺序。关系数据库中的表没有“自然顺序”。所以我假设您有一个 id(或时间戳或其他东西)来排序您的记录。还是 i 保证在每一行中都更大?然后你可以通过 i 来订购。

查询本身很简单 - 一旦您找到关于 window functions 的信息:

SELECT i - lag(i, 1, 0) OVER (ORDER BY id) AS result
FROM score
ORDER BY id;

包括@Clodoaldo 的改进(见评论)。

lag(i, 1, 0) OVER (ORDER BY id)

等价于,但更优雅:

COALESCE(lag(i) OVER (ORDER BY id), 0)

目的是覆盖第一行没有前一行的特殊情况。
Demo on sqlfiddle.

sum(result) 是微不足道的,因为根据您的描述,它必然等于最后一个 i:

SELECT i
FROM score
ORDER BY id DESC
LIMIT 1;

关于sql - 减去表中同一列的两条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11153980/

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