sql >> Databáze >  >> RDS >> PostgreSQL

Odstranění částečně/úplně překrývajících se událostí s časovými razítky začátku a konce napříč více hodnotami

Podmínka připojení:

Pokud nemůžete najít žádný další řádek, znamená to, že jste sami buď proto, že se nepřekrývají, nebo proto, že jste poslední datum.

SQL DEMO

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;

VÝSTUP

| 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. Proměnné prostředí MYSQL Openshift nejsou nastaveny

  2. Jak vybrat sloupec ze všech tabulek, ve kterých se nachází?

  3. Jak používat PostgreSQL hstore/json s JdbcTemplate

  4. MySQL Workbench