PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak usunąć częściowo/całkowicie nakładające się zdarzenia ze znacznikami czasu rozpoczęcia i zakończenia z danych wyjściowych zapytania?

Jest to forma luk i wysp. W takim przypadku określ, gdzie zaczynają się wyspy, szukając na początku nakładania się. Następnie wykonaj skumulowaną sumę początków i agregacji:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wykonać transakcje bazy danych za pomocą psycopg2/python db api?

  2. Jak sprawdzić, czy całe słowo istnieje w ciągu w Postgresie

  3. Generowanie zrzutu Postgresa i zapisywanie na innym serwerze

  4. Travis CI:FATAL:rola nie istnieje

  5. Co to jest LEFT JOIN w PostgreSQL