2017-07-27 7 views
1

私は誰かがそのトリッキーな質問に役立つことを願っ値:グループは

どのようにすることができます私のタイムスタンプ間の設定可能な隣接距離を持っている一部の行「BY GROUP」?

例表:

ID  | Value | When 
1  | 5  | 2017-06-30 11:45:55 
2  | 9  | 2017-06-30 11:45:56 
3  | 0  | 2017-06-30 11:45:59 
4  | 2  | 2017-06-30 11:46:02 
5  | 7  | 2017-06-30 17:19:22 
6  | 7  | 2017-06-30 17:19:22 
7  | 3  | 2017-06-30 17:19:22 
8  | 6  | 2017-06-30 17:19:22 

所望の結果:

ID  | Value | When 
3  | 0  | 2017-06-30 11:45:59 
7  | 3  | 2017-06-30 17:19:22 

結果は、(例では4行毎の二つのグループ)は、隣接するエントリを検索し、最低の「値」を伝えなければなりません。 隣接距離は1分または10分のような任意の値にすることができます。

「GROUP BY」できるように日付を再フォーマットしようとしましたが、これは最初の結果では機能しません。

私のMySQLのプログラミングのスキルが限られているが、それは、次の手順で行うことができます。

  1. SELECTおよびORDERは、「いつ」
  2. ゴー値けれども、現在および以前の「とき」の値との差を伝えることで、範囲内にある場合はGROUP、新しい行を出力しない場合はGROUP。

+0

"TIMESTAMPDIFF(SECOND、when、last_when)<希望の間隔"がある限り、 "last_when"(常に前の行から)やGROUP BYのような変数を設定できたらうまくいくでしょう。結果には、MIN(値)行の「when」値が含まれます。 –

答えて

0

最後に、未処理のソート済みデータを取得するためにDB内のビューを使用するCプログラムを作成することにしました。プログラムは、タイムスタンプ間の差が所望の限界内にある場合にグループを出力する。 出力はデータベースに戻されます。