在SQL中从另一行减去一行数据

我已经迷上了一些SQL,其中有几行数据,我想从上一行中减去一行,并使其一直向下重复。

所以这是表格:

CREATE TABLE foo(

ID,

长度

插入foo(id,length)VALUES(1,1090)

插入foo(id,length)VALUES(2,888)

插入foo(id,length)值(3,545)

插入foo(id,length)VALUES(4,434)

插入foo(id,length)VALUES(5,45)

我希望结果显示第三列,称为差异,即从下面的一列减去第一行,最后一行从零减去。

+ ------ + ------------------------ +

| id |长度| 差异|

+ ------ + ------------------------ +

| 1 | 1090 | 202 |

| 2 | 888 | 343 |

| 3 | 545 | 111 |

| 4 | 434 | 389 |

| 5 | 45 | 45 |

我已经尝试过自我连接,但是我不确定如何限制结果,而不是让结果不断循环。我不能确定id值对于给定的结果集是连续的,所以我不使用该值。我可以扩展架构以包括某种顺序值。

这是我尝试过的:

SELECT id,f.length,f2.length,(f.length-f2.length)AS差异

从foo f,foo f2

谢谢您的协助。

回答:

这可能会对您有所帮助。

select a.id, a.length, 

coalesce(a.length -

(select b.length from foo b where b.id = a.id + 1), a.length) as diff

from foo a

以上是 在SQL中从另一行减去一行数据 的全部内容, 来源链接: utcz.com/qa/431247.html

回到顶部