Oracle
 sql >> Database >  >> RDS >> Oracle

Incrementa il numero di riga nel gruppo con gruppi ripetuti

Puoi utilizzare la differenza dei numeri di riga per definire i gruppi:

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

È un po' difficile spiegare perché funziona. Se guardi i risultati della sottoquery, diventa ovvio perché la differenza tra i due row_number() i valori identificano gruppi sequenziali.