sql >> Base de Datos >  >> RDS >> Oracle

obtener intervalos de valor invariable de una secuencia de números

Desea identificar grupos de valores adyacentes. Un método es usar lag() para encontrar el comienzo de la secuencia, luego una suma acumulativa para identificar los grupos.

Otro método es la diferencia del número de fila:

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;