2012-03-15 8 views
1

タイムスタンプ値とイベント文字列を持つテーブルにデータセットがあります。どのようにして最小のイベントを得ることができますか?同じイベント値を持つ他のイベントの5秒間隔。与えられた時間間隔でグループ化されたカウントデータセット

データ:

TS       EVENT       
-------------------------- -------------------------------- 
2012-03-15 13:09:27.486000 foo        
2012-03-15 13:09:37.253000 bar        
2012-03-15 13:09:31.243000 foo        
2012-03-15 13:09:26.243000 foo        
2012-03-15 13:09:47.841000 foo        

結果が「foo」というイベントの

TS       EVENT       
-------------------------- -------------------------------- 
2012-03-15 13:09:26.243000 foo        
2012-03-15 13:09:37.253000 bar        
2012-03-15 13:09:47.841000 foo        

つである必要があり、別の「foo」というイベントの前または後わずか3または4秒であるため、すべきでありません選択される。特定の秒数の範囲内に複数のイベントが存在する場合は、最初のイベントのみが返されます。

何かヒントありがとうございます!ありがとう!

+0

RDBMS(SQLiteのは、MySQL、Oracleのなど)は、このですか? –

+0

Exasol(http://www.exasol.com/)だが、他のRDBMS/SQLはどこから始めればいいのか分かりません。 – Boris

答えて

2

試してみてください。

with cte as 
(select event, ts, row_number() over (partition by event order by ts) rn 
from myTable) 
select t1.event, t1.ts 
from cte t1 
left join cte t2 
     on t2.event = t1.event and 
      t2.rn=t1.rn+1 and 
      t2.ts <= t1.ts + interval '5' second 
where t2.event is null 
+0

うわー、魅力のように動作します。ありがとうございました! – Boris

関連する問題