sql >> Databasteknik >  >> RDS >> Oracle

Öka radnummer på grupp med upprepade grupper

Du kan använda skillnaden mellan radnummer för att definiera grupperna:

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

Det är lite svårt att förklara varför detta fungerar. Om du tittar på resultaten av underfrågan blir det uppenbart varför skillnaden mellan de två row_number() värden identifierar sekventiella grupper.




  1. Hur man använder UTF-8 Collation i SQL Server-databas?

  2. php echo första raden vänta/sov sedan eko andra raden

  3. Laravel 4 Cascading Soft Deletes

  4. Jag har problem när jag använder left join och group by samtidigt. Jag har flera rader med data med samma user_id , så jag vill använda group by