有没有人知道是否有办法在SQLite中获得此结果。
给出具有单列x的表,如下所示:
x |
--
1
4
5
2
我需要添加列dx,这只是差异x_i - x_ {i-1}(第一个除外),如下所示:
x | dx |
-- --
1 | 0
4 | 3
5 | 1
2 | -3
非常感谢!
更新:鉴于有id列:
id | x |
-- --
1 | 1
2 | 4
3 | 5
4 | 2
是否有可能获得:
id | x | dx |
-- -- --
1 | 1 | 0
2 | 4 | 3
3 | 5 | 1
4 | 2 | -3
答案 0 :(得分:1)
SQL表没有与之关联的隐式顺序。您必须提供ORDER BY
子句才能对结果执行订单。
您可以通过哪个列来定义减法的前导行? (提示:没有。)
根据修订后的问题添加id
列
sqlite> select id, x, (select t1.x - t2.x from t as t2 where id = t1.id - 1) from t as t1;
1|1|
2|4|3
3|5|1
4|2|-3
或者
sqlite> select id, x, coalesce((select t1.x - t2.x from t as t2 where id = t1.id - 1),0) from t as t1;
1|1|0
2|4|3
3|5|1
4|2|-3