Dazu gibt es einen Trick. Wenn Sie von den Datumsangaben eine aufsteigende Zahlenfolge subtrahieren, bleiben diese bei aufeinanderfolgenden Datumsangaben konstant. Wir können dies dann verwenden, um Gruppen für jeden Entwickler zu definieren.
select developer, max(numdays) as maxseq
from (select developer, grp, min(MRDate) as MR_start, max(MRDate) as MR_end,
count(distinct MRDate) as numdays
from (select t.*,
(MRDate - dense_rank() over (partition by developer order by date)) as grp
from t
) t
group by developer, grp
) t
group by developer;
Wenn Sie wissen, dass es höchstens einen Datensatz pro Datum gibt, können Sie row_number()
verwenden statt dense_rank()
und count(*)
statt count(distinct MRDate)
.