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

Trouver le Nième minimum d'une valeur Varchar dans Oracle

Si vous voulez trouver la Nième valeur de quoi que ce soit, alors la fonction analytique NTH_VALUE() est un bon point de départ.

En supposant que vous souhaitiez que cela soit basé sur la partie numérique uniquement, vous devez remplacer tout ce qui n'est pas un nombre, pour lequel vous pouvez utiliser REGEXP_REPLACE()

select regexp_replace(escalation_level, '[^[:digit:]]')
  from my_table

Pour obtenir la Nième valeur pour un CONFIG_ID donné, ce serait :

select nth_value(escalation_level, n)
         over ( partition by config_id 
                    order by regexp_replace(escalation_level, '[^[:digit:]]') )
  from my_table

n est l'indice de la valeur que vous souhaitez renvoyer.