時間の経過とともに位置を追跡するテーブルを入手しました。このテーブルには多くの行が含まれており、形式を変更することはできません。すべての位置には、ID、実際の位置、およびタイムスタンプ(日時)が挿入されます。位置自体は、カスタム関数を使用してx/y座標に変換できる連結文字列に挿入されます。
プロシージャを作成し、すべての既知の位置と特定の適切なタイムスタンプを一覧表示します。今のところ問題ありません。ただし、位置と時間の違いを示す出力列も作成する必要があります。
明確にするために。私が持っているもの:
Id | Timestamp | Foreign_Id | POS
----------------------------------------------------------
1 | 2011-02-20 00:00:00 | 2 | PositionAsString
----------------------------------------------------------
2 | 2011-02-20 00:00:05 | 2 | PositionAsString
----------------------------------------------------------
3 | 2011-02-20 00:00:15 | 2 | PositionAsString
----------------------------------------------------------
4 | 2011-02-20 00:00:37 | 2 | PositionAsString
位置の座標は関数getX
を介して利用できgetY
、XとYのフロート値を返します。位置の差は2Dのみであるため、ピタゴラスの定理を使用して計算されます。
欲しいもの
Id | Timestamp | Foreign_Id | POS | DiffPos | Speed
---------------------------------------------------------------------------
1 | 2011-02-20 00:00:00 | 2 | PositionAsString | 0 | 0
---------------------------------------------------------------------------
2 | 2011-02-20 00:00:05 | 2 | PositionAsString | 20 | 4
---------------------------------------------------------------------------
3 | 2011-02-20 00:00:10 | 2 | PositionAsString | 10 | 2
---------------------------------------------------------------------------
4 | 2011-02-20 00:00:20 | 2 | PositionAsString | 10 | 1
だから今私の問題は前の行との差を計算する方法です。重要なのは、テーブルに多くの行があるため、非効率的な計算が実行される前に、結果セットが外部キーに絞り込まれることです。