Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Erhöhen Sie die Zeilennummer in der Gruppe mit wiederholten Gruppen

Sie können den Unterschied der Zeilennummern verwenden, um die Gruppen zu definieren:

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);

Es ist ein wenig schwer zu erklären, warum das funktioniert. Wenn Sie sich die Ergebnisse der Unterabfrage ansehen, wird deutlich, warum der Unterschied zwischen den beiden row_number() Werte identifizieren sequentielle Gruppen.