時系列データで「5日以内」のようなクエリを実行するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/5325261

質問

時系列データの次のクエリのようなクエリを実行する簡単な方法を持ちたいと思います。

「互いから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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top