U kunt het verschil in rijnummers gebruiken om de groepen te definiëren:
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);
Het is een beetje moeilijk uit te leggen waarom dit werkt. Als je naar de resultaten van de subquery kijkt, wordt het duidelijk waarom het verschil tussen de twee row_number()
waarden identificeren opeenvolgende groepen.