sql >> Databáze >  >> RDS >> Oracle

Dotaz Oracle sql pro seskupení po sobě jdoucích záznamů podle data

Za předpokladu, že můžeme použít pouze start_date k identifikaci sousedních záznamů (tj. neexistují žádné mezery), pak můžete použít metodu rozdílu čísel řádků:

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;

Chcete-li zjistit, jak to funguje, podívejte se na výsledky dílčího dotazu. Měli byste být schopni "vidět", jak rozdíl čísel dvou řádků definuje skupiny sousedních záznamů se stejnou sazbou.



  1. mysql dotaz - problém vložení dat unix_timestamp (nyní ( ) ).

  2. Oprava chyby mysql server zmizel

  3. Chyba výsledku UDF

  4. Proč názvy tabulek v SQL Server začínají dbo?