मुख्य अवलोकन यह है कि संख्याओं का एक क्रम घटा एक और क्रम एक स्थिरांक है। हम row_number
. का उपयोग करके एक और क्रम उत्पन्न कर सकते हैं . यह सभी समूहों की पहचान करता है:
select id, MIN(number) as low, MAX(number) as high
from (select t.*,
(number - ROW_NUMBER() over (partition by id order by number) ) as groupnum
from t
) t
group by id, groupnum
बाकी सब सिर्फ एकत्रीकरण है।