Er is een truc om dit te doen. Als u een oplopende reeks getallen van de datums aftrekt, zijn ze constant voor opeenvolgende datums. We kunnen dit vervolgens gebruiken om groepen voor elke ontwikkelaar te definiëren.
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;
Als je weet dat er maximaal één record per datum is, dan kun je row_number()
. gebruiken in plaats van dense_rank()
en count(*)
in plaats van count(distinct MRDate)
.