gpt4 book ai didi

mysql - 我如何用 +1 shift 对两行进行减法来创建一个新列

转载 作者:行者123 更新时间:2023-11-30 21:28:00 25 4
gpt4 key购买 nike

我有两列

sum1   sum2
100 70
60 20
30 10

我还需要一列 col3 可以像这样通过减法计算

sum1    sum2    col3
100 70 null
60 20 -80
30 10 -50

-80 我可以通过 20-100-50 通过 10-60。我需要用一个 shift 减去 raws

如何通过 sql 查询获取这个新列?

最佳答案

在关系数据库中,记录默认是无序的,因此不存在前置记录的内在概念。为了使您的请求成为可能,您确实需要原始表中的一列可用于排序记录。我假设这样的列存在于表中并称为 id

如果您运行的是 MySQL 8.0,则使用窗口函数 LAG() 很简单,它可以让您访问之前的记录:

SELECT sum1, sum2, sum2 - LAG(sum1) OVER(ORDER BY id) col3
FROM mytable

如果您运行的是较旧的 MySQL 版本,那么它会稍微复杂一些。一个常见的解决方案是自连接表,并使用 NOT EXISTS 条件来定位前一条记录(这句话如:recover the record has a smaller id than the current record, and for which不存在 ID 小于当前记录且大于加入记录的其他记录):

SELECT t.sum1, t.sum2, t.sum2 - t_last.sum1 col3
FROM mytable t
LEFT JOIN mytable t_last
ON t_last.id < t.id
AND NOT EXISTS (
SELECT 1
FROM mytable t1
WHERE t1.id < t.id AND t1.id > t_last.id
)

关于mysql - 我如何用 +1 shift 对两行进行减法来创建一个新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57907640/

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