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

ottenere intervalli di valore non variabile da una sequenza di numeri

Si desidera identificare gruppi di valori adiacenti. Un metodo consiste nell'usare lag() per trovare l'inizio della sequenza, quindi una somma cumulativa per identificare i gruppi.

Un altro metodo è la differenza del numero di riga:

select value, min(id) as from_id, max(id) as to_id
from (select t.*,
             (row_number() over (order by id) -
              row_number() over (partition by val order by id
             ) as grp
      from table t
     ) t
group by grp, value;