Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Incrementar o número da linha no grupo com grupos repetidos


Você pode usar a diferença de números de linha para definir os 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);

É um pouco difícil explicar por que isso funciona. Se você observar os resultados da subconsulta, fica óbvio porque a diferença entre os dois row_number() os valores identificam grupos sequenciais.