sql >> Database teknologi >  >> RDS >> Oracle

Oracle sql-forespørgsel for at gruppere fortløbende poster efter dato

Forudsat at vi bare kan bruge start_date for at identificere de tilstødende poster (dvs. der er ingen huller), så kan du bruge forskellen mellem rækkenumre:

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;

For at se, hvordan dette virker, skal du se på resultaterne af underforespørgslen. Du bør være i stand til at "se", hvordan forskellen mellem de to rækkenumre definerer grupperne af tilstødende poster med samme hastighed.



  1. Sådan fungerer DATE_FORMAT() i MariaDB

  2. Er der et "connect by"-alternativ i MySQL?

  3. MySQL sorterer efter antal forekomster

  4. Indsæt UTC/GMT-dato i Oracle-database med Java og Spring