時系列データで「5日以内」のようなクエリを実行するにはどうすればよいですか?
-
25-10-2019 - |
質問
時系列データの次のクエリのようなクエリを実行する簡単な方法を持ちたいと思います。
「互いから7日以内に行われる最も典型的なイベントは何ですか?」
SQLとJavaプログラムを利用して、各行を調べてクエリを実行することでこれを行うことができます。クエリは、7日前またはそれ以降のすべてのイベントを検索しますが、これはあまりエレガントではなく、パフォーマンスは恐ろしいことです。 SQLまたは別のクエリ言語を使用してこれをエレガントに行う別の方法はありますか?
単純化されたテーブル構造は、次のようなものです。
thetime datetime
eventid int
magnitude double
intensity double
一般的なソリューションを探しているので、私は具体的にデータが何であるかを説明したくありません。
解決
セルフ結合を使用して、このようなことをすることができます。これはSQL Serverの有効な構文ですが、テーブル構造や使用しているRDBMSがわからない場合は、セットアップ用にカスタマイズするのは困難です...
SELECT TOP 10
a.Event as 'First Event',
b.event as 'Second Event',
ABS(CAST((a.timefield - b.timefield) as INT)) as 'Time Apart'
FROM MYtable a
INNER JOIN Mytable B
ON a.IDField <> b.IDField
WHERE (ABS(CAST((a.timefield - b.timefield) as INT)) <= 5
所属していません StackOverflow