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

Oracle sql заявка за групиране на последователни записи по дата

Ако приемем, че можем просто да използваме start_date за идентифициране на съседните записи (т.е. няма пропуски), тогава можете да използвате подхода на разликата в номерата на редовете:

select id, min(start_date) as mn_date, max(end_date) as mx_date, rate
from (select t.*,
             row_number() over (partition by id order by start_date) as seqnum_i,
             row_number() over (partition by id, rate order by start_date) as seqnum_ir
      from t
     ) t
group by id (seqnum_i - seqnum_ir), rate;

За да видите как работи това, погледнете резултатите от подзаявката. Трябва да можете да "видите" как разликата между числата на двата реда определя групите от съседни записи с еднаква скорост.



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

  2. Промяна на първичния ключ

  3. Плюсове и минуси на използването на пакети в Oracle

  4. Oracle/SQL - Намиране на записи с една стойност, с изключение на нули

  5. DbCommand и параметризиран SQL, ORACLE срещу SQL Server