Có một mẹo để làm điều này. Nếu bạn trừ một chuỗi số tăng dần khỏi các ngày, thì chúng sẽ không đổi đối với các ngày có tuần tự. Sau đó, chúng tôi có thể sử dụng điều này để xác định nhóm cho từng nhà phát triển.
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;
Nếu bạn biết có nhiều nhất một bản ghi mỗi ngày, thì bạn có thể sử dụng row_number()
thay vì dense_rank()
và count(*)
thay vì count(distinct MRDate)
.