sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur tar man bort delvis/helt överlappande händelser med start- och sluttidsstämplar från frågeutdata?

Detta är en form av luckor-and-öar. I det här fallet bestämmer du var öarna börjar genom att leta efter överlappningar i början. Gör sedan en kumulativ summa av starterna och aggregeringen:

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. MySQL casta/konvertera automatiskt en sträng till ett nummer?

  2. Yii CDbConnection kunde inte öppna DB-anslutningen:kunde inte hitta drivrutinen med google cloud sql

  3. Hur kan jag inaktivera ett auto-inkrementerande ID från att uppdateras vid dubblettnyckeluppdatering?

  4. Hur lägger jag till ett kluster på en sammansatt nyckel?