sql >> Database >  >> RDS >> PostgreSQL

Gedeeltelijk/volledig overlappende gebeurtenissen met begin- en eindtijdstempels voor meerdere waarden verwijderen

De deelnamevoorwaarde:

Als je geen andere rij kunt vinden, betekent dit dat je alleen bent, ofwel omdat ze elkaar niet overlappen of omdat je de laatste date bent.

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;

UITVOER

| 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. Aankondiging van ClusterControl 1.7.2:verbeterde PostgreSQL-back-up en ondersteuning voor TimescaleDB en MySQL 8.0

  2. LEAST() Functie in PostgreSQL

  3. JPA @Size annotatie voor BigDecimal

  4. Failover &Failback voor PostgreSQL op Microsoft Azure