0

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
4

1 に答える 1

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
于 2013-05-15T18:51:06.530 に答える