Oracle
 sql >> Base de données >  >> RDS >> Oracle

obtenir des intervalles de valeur non changeante à partir d'une séquence de nombres

Vous voulez identifier des groupes de valeurs adjacentes. Une méthode consiste à utiliser lag() pour trouver le début de la séquence, puis une somme cumulée pour identifier les groupes.

Une autre méthode est la différence de numéro de ligne :

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;