Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Selecione o segundo valor mínimo no Oracle


Usar uma função analítica
SELECT value
  FROM (SELECT value,
               dense_rank() over (order by value asc) rnk
          FROM table)
 WHERE rnk = 2

As funções analíticas RANK , DENSE_RANK e ROW_NUMBER são idênticas, exceto pela forma como lidam com as gravatas. RANK usa um processo de desempate no estilo esportivo, portanto, se duas linhas empatarem em uma classificação de 1, a próxima linha terá uma classificação de 3. DENSE_RANK dá a ambas as linhas empatadas em primeiro lugar uma classificação de 1 e, em seguida, atribui à próxima linha uma classificação de 2. ROW_NUMBER desempate arbitrariamente e dá a uma das duas linhas com o valor mais baixo uma classificação de 1 e a outra uma classificação de 2.