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

Trovare l'ennesimo minimo di un valore Varchar in Oracle

Se vuoi trovare l'ennesimo valore di qualsiasi cosa, allora la funzione analitica NTH_VALUE() è un buon punto di partenza.

Supponendo che lo desideri in base alla sola parte numerica, devi sostituire tutto ciò che non è un numero, per il quale puoi utilizzare REGEXP_REPLACE()

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

Per ottenere l'ennesimo valore per un dato CONFIG_ID sarebbe:

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

dove n è l'indice del valore che vuoi restituire.