Ранее я уже публиковал аналогичный вопрос, но обновление параметров означало, что опубликованное решение не будет работать, и у меня возникли проблемы при попытке решить, как интегрировать пересмотренное требование.Я не уверен, что протокол здесь - кажется, что я не могу опубликовать обновленный вопрос к исходному сообщению на Получение максимальной последовательной полосы с событиями
Я ищуодин запрос, если это возможно, запуск PostgreSQL 9.6.6 под pgAdmin3 v1.22.1
У меня есть таблица с датой и строкой для каждого события в дате:
Date Events
2018-12-10 1
2018-12-10 1
2018-12-10 0
2018-12-09 1
2018-12-08 0
2018-12-08 0
2018-12-07 1
2018-12-06 1
2018-12-06 1
2018-12-06 0
2018-12-06 1
2018-12-04 1
2018-12-03 0
I 'ищу самую длинную последовательность дат без перерыва.В этом случае 2018-12-08
и 2018-12-03
являются единственными датами без событий, есть две даты с событиями между 2018-12-08
и today
и три между 2018-12-8
и 2018-12-07
- поэтому я бы хотелответ 3.
Я знаю, что могу сгруппировать их с чем-то вроде:
Select Date, count(Date) from Table group by Date order by Date Desc
Чтобы получить только самую последнюю последовательность, у меня есть что-то вроде этого - subquery
возвращает самую последнюю дату без событий, а внешний запрос подсчитывает даты после этой даты:
select date, count(distinct date) from Table
where date>
( select date from Table
group by date
having count (case when Events is not null then 1 else null end) = 0
order by date desc
fetch first row only)
group by date
Но теперь мне нужна самая длинная полоса, а не только самая последняя полоса.
Когда я писал ранее, я предполагал, что для каждой даты в диапазоне есть строки.Но это предположение было неверным, поэтому данный ответ не работает.Мне также нужен запрос для возврата даты начала и окончания диапазона.
Спасибо!