ऐसा करने की एक तरकीब है। यदि आप तिथियों में से संख्याओं के बढ़ते क्रम को घटाते हैं, तो वे क्रमिक तिथियों के लिए स्थिर रहेंगे। इसके बाद हम प्रत्येक डेवलपर के लिए समूहों को परिभाषित करने के लिए इसका उपयोग कर सकते हैं।
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;
यदि आप जानते हैं कि प्रति दिनांक अधिकतम एक रिकॉर्ड है, तो आप row_number()
. का उपयोग कर सकते हैं इसके बजाय dense_rank()
और count(*)
count(distinct MRDate)
. के बजाय ।