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

Jak z výstupu dotazu odstranit částečně/plně překrývající se události s časovými razítky začátku a konce?

Toto je forma mezer a ostrovů. V tomto případě určete, kde ostrovy začínají, hledáním přesahů na začátku. Poté proveďte kumulativní součet zahájení a agregace:

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. Oracle/SQL - Hledání záznamů s jednou hodnotou bez nul

  2. Problémy s aktualizací při vytváření jednoduchého hlasovacího systému PHP, MySql

  3. Závislá vlastnost v ReferentialConstraint je mapována na sloupec generovaný úložištěm

  4. Omezte počet znaků ve sloupci dotazu mysql