3

次の表があるとします。

id | elementID | date | time
----------------------------

私が検索するのは次のとおりです。

  1. すべての「時間」を選択-指定された要素IDの値を日付、時間で並べ替えます(これは簡単です)
  2. 時間値間の時間差を計算します

2 番目のポイントは、どこから始めればよいかわからないため、問題を引き起こします。C ++では、すべての「時間」をループして繰り返し、単純に計算します

dt = time_i - time_{i-1}
e.g.
00:00:57 - 00:00:30 = 27s = dt
00:01:05 - 00:00:57 =  8s = dt
00:01:09 - 00:01:05 =  4s = dt
etc.

どんな助けにも感謝します

4

1 に答える 1

10

lagウィンドウ関数が必要です。

SELECT time_col - lag(time_col) OVER (ORDER BY whatever)
FROM the_table
ORDER BY whatever;

ウィンドウ関数のチュートリアルとウィンドウ関数のユーザー マニュアル ページを参照してください。lagウィンドウ関数を使用すると、現在の結果セットで結果セットの「前の」行を取得し、それを式で使用できます。

于 2013-05-22T12:49:37.620 に答える