SobesLab логотип SobesLab

Ответ

Одно из решений – превратить задачу в поиски "разрывов". Для дат: можно вычислить для каждой записи некий «групповой ключ», например разность между датой и порядковым номером строки (ROW_NUMBER() по сортированной дате). В непрерывной последовательности (день за днем) эта разность остается одинаковой для всех элементов. Затем сгруппировать по этому ключу и посмотреть, у какой группы максимальное количество элементов – это и будет самая длинная последовательность дней. Аналогично для числовых последовательностей: анализируются места, где нарушается постоянный шаг. Таким образом, принцип – найти максимальную длину последовательных элементов, определив группы без пропусков.