是的有点晚了,但为了完整性。SQLite 2018年版本3.25.0添加了对窗口函数的支持。现在可以使用以下命令完成上述任务LAG() 和 LEAD() https://www.sqlite.org/windowfunctions.html功能。
取自:https://www.sqlitetutorial.net/sqlite-window-functions/ https://www.sqlitetutorial.net/sqlite-window-functions/
LAG 提供对当前行之前给定物理偏移量处的行的访问。
因此,在 Linux 中使用 sqlite3 命令,以下内容应与您的问题中列出的输出匹配。前 2 个命令仅用于显示正确的输出格式。
sqlite> .mode columns
sqlite> .headers on
sqlite> CREATE TABLE data(id INT, record_id TEXT, price REAL);
sqlite> INSERT INTO data VALUES(1,"apple001",36.00);
sqlite> INSERT INTO data VALUES(67,"apple001",37.87);
sqlite> INSERT INTO data VALUES(765,"apple001",45.82);
sqlite> INSERT INTO data VALUES(892,"apple001",26.76);
sqlite> SELECT id, record_id, price, (price - LAG(price, 1) OVER (ORDER BY id)) AS difference FROM data;
id record_id price difference
---------- ---------- ---------- ----------
1 apple001 36.0
67 apple001 37.87 1.87
765 apple001 45.82 7.95
892 apple001 26.76 -19.06
我希望这能为新用户节省一些时间。