sql >> データベース >  >> RDS >> PostgreSQL

複数の値にまたがる開始タイムスタンプと終了タイムスタンプを持つ部分的/完全に重複するイベントを削除する

    参加条件:

    • 同じ部屋で別のイベントを見つけてみてください
    • ただし、自分とは異なるIDが必要です
    • 日付を重複させる必要があります2つの日付範囲が重複するかどうかを判断します
    • 最後に、作成日を遅くする必要があります。

    他の行が見つからない場合は、重複していないか、最新の日付であるために、自分が1人であることを意味します。

    SQLデモ

    SELECT a.*
    FROM "events" a
    LEFT JOIN "events" b
      ON a.room = b.room 
     AND a.id <> b.id
     AND a."start" <= b."end"
     AND a."end"   >= b."start"
     AND a.created_at < b.created_at
    WHERE b.id IS NULL;
    

    出力

    | id |                start |                  end |                  created_at |  room |
    |----|----------------------|----------------------|-----------------------------|-------|
    |  2 | 2019-01-23T18:30:00Z | 2019-01-23T19:00:00Z | 2019-01-23T01:04:05.861876Z | Room1 |
    |  7 | 2019-01-23T20:15:00Z | 2019-01-23T20:45:00Z |  2019-01-20T20:20:20.20202Z | Room1 |
    |  9 | 2019-01-23T18:30:00Z | 2019-01-23T19:00:00Z | 2019-01-23T01:04:05.861877Z | Room2 |
    | 14 | 2019-01-23T20:15:00Z | 2019-01-23T20:45:00Z |  2019-01-20T20:20:20.20202Z | Room2 |
    | 16 | 2019-01-23T20:15:00Z | 2019-01-23T20:45:00Z | 2019-01-20T20:20:20.202021Z | Room3 |
    


    1. Rails + Amazon RDS:レイテンシーの問題

    2. ループ内に配列があるチェックボックスFalseResult?

    3. エンティティ フレームワークを使用して日時値からのみ日付部分を取得する

    4. データを合計するSQLクエリ