Il y a une astuce pour faire ça. Si vous soustrayez une séquence croissante de nombres aux dates, elles seront constantes pour les dates séquentielles. Nous pouvons ensuite l'utiliser pour définir des groupes pour chaque développeur.
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;
Si vous savez qu'il y a au plus un enregistrement par date, vous pouvez utiliser row_number()
au lieu de dense_rank()
et count(*)
au lieu de count(distinct MRDate)
.