sql >> Base de Datos >  >> RDS >> Oracle

Incrementar el número de fila en el grupo con grupos repetidos

Puede utilizar la diferencia de números de fila para definir los grupos:

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 un poco difícil explicar por qué esto funciona. Si observa los resultados de la subconsulta, se vuelve obvio por qué la diferencia entre los dos row_number() los valores identifican grupos secuenciales.