時間が近すぎるイベントを見つけようとしています。これはちょうど1つのクエリで1つのpostgresクエリで、特定の時間量で2つのイベントが発生したかどうかを特定します。
ここにシナリオがあります。私はdefinition
を持ち、特定の場合に発生するevents
を持っています。userid
。 event 1
は、特定のユーザーに対してevent 2
の後1週間以内に発生してはならないとします。だから私は、あるユーザーのために、イベント1が今日発生した場合、イベント2は同じユーザーのが発生したかどうかを、1週間以内ににするかどうかを決定したいと思います。単一のSQLクエリでこれを行う方法はありますか?理想的にはそれは何かのようになります
SELECT event_id, userid as use_userid FROM events WHERE definition = 1 and date > current_date
- interval '1 day' AND (SELECT COUNT(*) FROM events WHERE userid = use_userid
AND definition = 2 AND date > current_date - interval '7 days') > 0
私は閉じますか?私は、これが起こったのはどのユーザーであるかを知りたがっています。残りの情報はあまり重要ではありません。
お返事ありがとうございます。私はこれを見ることでかなりのことを学びました(パーティション分割、合体、遅れ)。しかし、私はいくつかのエラーに遭遇しました( 'xxx'と間隔diffrnceを整数と比較する)。また、あなたのコードは、私が必要とするものよりも、より広範囲(そして、効率的ではない)だと思います。私は、定義の特定のペア(例えば1と2)の質問をする必要があります。あなたはあらゆるイベントのペアを選択しているようですが、私は許される時間内に多くのイベントがあります。 – helloB