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

Posted

技术标签:

【中文标题】Sqlite 从不同的列中减去不同的行【英文标题】:Sqlite subtract different rows from different columns 【发布时间】:2022-01-21 14:39:36 【问题描述】:

假设我有这样的 sql 表:

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

现在,我不想减去 300-90,然后再减去 600-80,依此类推,偏移量为一行。表可以是这样的奇数。有没有机会在没有循环和外部功能的情况下做到这一点?我将 Python api 用于 sqlite3。

提前致谢!

【问题讨论】:

【参考方案1】:

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

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

LAG()窗口函数:

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

请参阅demo。

【讨论】:

这就是我要找的,谢谢:)

以上是关于Sqlite 从不同的列中减去不同的行的主要内容,如果未能解决你的问题,请参考以下文章

从 SQLite 中的所有行中减去平均值

如何从 Treeview / Tkinter (SQLite) 中的不同表中获取不同的值?

在 Sqlite 中,为不同列中返回的每个名称获取前 2 个

Sqlite3 从列中具有相似值的行获取数据

sqlite 怎么知道索引在哪个索引btree里

SQLite进阶-10.约束