Sqlite 从不同的列中减去不同的行

Sqlite subtract different rows from different columns

假设我有 sql table 这样的:

id | val_1 | val_2
1  | 55    |  300
2  | 90    |  600
3  | 80    |  200
..

现在,我不想减去 300-90,然后减去下一个 600-80 等等,并且偏移一行。 Table 可以是这样的奇数。有没有机会在没有循环和外部函数的情况下做到这一点?我使用 Python api 作为 sqlite3.

提前致谢!

根据您想要的输出,您可以使用 LEAD() window 函数:

SELECT *, 
       val_2 - LEAD(val_1, 1, 0) OVER (ORDER BY id) AS difference
FROM tablename;

LAG()window函数:

SELECT *, 
       LAG(val_2, 1, 0) OVER (ORDER BY id) - val_1 AS difference
FROM tablename;

参见demo