PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Как да премахнете частично/напълно припокриващи се събития с начални и крайни времеви клейма от изхода на заявката?

Това е форма на пропуски и острови. В този случай определете къде започват островите, като потърсите припокривания в началото. След това направете кумулативен сбор от стартиранията и агрегацията:

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. Как работи функцията CONCAT() в PostgreSQL

  2. Как да изброя всички потребители в PostgreSQL

  3. Как да използвам case-when в Ecto Queries в elixir?

  4. Postgresql:Заявка връща неправилни данни

  5. Как да намеря почти подобни записи в sql?