आप समूहों को परिभाषित करने के लिए पंक्ति संख्याओं के अंतर का उपयोग कर सकते हैं:
select Shade, count(*) as amount
from (select t.*,
row_number() over (order by level) as seqnum,
row_number() over (partition by shade order by level) as seqnum_s
from t
) t
group by Shade, (seqnum - seqnum_s);
यह समझाना थोड़ा कठिन है कि यह क्यों काम करता है। यदि आप सबक्वेरी के परिणामों को देखते हैं, तो यह स्पष्ट हो जाता है कि दोनों row_number()
के बीच का अंतर क्यों है मान अनुक्रमिक समूहों की पहचान करते हैं।