これを行うにはトリックがあります。日付から増加する数列を引くと、連続する日付に対して一定になります。その後、これを使用して各開発者のグループを定義できます。
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;
日付ごとに最大で1つのレコードがあることがわかっている場合は、row_number()
を使用できます。 dense_rank()
の代わりに およびcount(*)
count(distinct MRDate)
の代わりに 。