यह अंतराल और द्वीपों का एक रूप है। इस मामले में, यह निर्धारित करें कि शुरुआत में ओवरलैप्स की तलाश करके द्वीप कहां से शुरू होते हैं। फिर, प्रारंभ और एकत्रीकरण का संचयी योग करें:
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;