sql >> Database >  >> RDS >> PostgreSQL

Hoe gedeeltelijk/volledig overlappende gebeurtenissen met begin- en eindtijdstempels uit de query-uitvoer verwijderen?

Dit is een vorm van gaten-en-eilanden. Bepaal in dit geval waar de eilanden beginnen door in het begin naar overlappingen te zoeken. Voer vervolgens een cumulatieve som uit van de starts en aggregatie:

select max(id), min(start), max(end), max(created_at)
from (select t.*,
             count(*) filter (where max_end < end) over (order by start) as grouping
      from (select t.*,
                   max(end) over (order by start rows between unbounded preceding and 1 preceding) as max_end
            from events t
           ) t
     ) t
group by grouping;



  1. Linker join met dynamische tabelnaam afgeleid van kolom

  2. Hoe verbinding maken met mssql met behulp van pdo via PHP en Linux?

  3. PostgreSQL-equivalent voor MySQL GROUP BY

  4. Converteer alle mysql-tabelgegevens naar JSON in spring boot