शून्य घटनाओं वाली पंक्तियों को देखने और उन्हें दूर करने में आपकी वृत्ति एक अच्छी है। हम शून्य ईवेंट दिनों के बीच "अंतराल" प्राप्त करने के लिए विंडो फ़ंक्शन के साथ एक सबक्वेरी का उपयोग कर सकते हैं, और फिर इसके बाहर एक क्वेरी में वह रिकॉर्ड ले सकते हैं जो हम चाहते हैं, जैसे:
select *
from (
select date as day_after_streak
, lag(date) over(order by date asc) as previous_zero_date
, date - lag(date) over(order by date asc) as difference
, date_part('days', date - lag(date) over(order by date asc) ) - 1 as streak_in_days
from dates
group by date
having sum(events) = 0 ) t
where t.streak_in_days is not null
order by t.streak_in_days desc
limit 1