Oracle
 sql >> база данни >  >> RDS >> Oracle

Увеличете номера на реда в групата с повтарящи се групи

Можете да използвате разликата в номерата на редовете, за да дефинирате групите:

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

Малко е трудно да се обясни защо това работи. Ако погледнете резултатите от подзаявката, става очевидно защо разликата между двете row_number() стойностите идентифицират последователни групи.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Вмъкване на стойност по подразбиране, когато е вмъкната нула

  2. Как да стартирам група на SQL заявка по проблем?

  3. Oracle Преобразува TIMESTAMP с часова зона в DATE

  4. Извличане на xml данни чрез заявка на oracle

  5. Шифроване вътре в Oracle