Para explicar este comportamiento, necesitamos entender cómo Oracle procesa ROWNUM. Al asignar ROWNUM a una fila, Oracle comienza en 1 y solo incrementa el valor cuando se selecciona una fila; es decir, cuando se cumplen todas las condiciones de la cláusula WHERE. Dado que nuestra condición requiere que ROWNUM sea mayor que 2, no se seleccionan filas y ROWNUM nunca se incrementa más allá de 1.
La conclusión es que condiciones como las siguientes funcionarán como se esperaba.
.. DONDE número de filas =1;
.. DONDE número de fila <=10;
Mientras que las consultas con estas condiciones siempre devolverán cero filas.
.. DONDE número de filas =2;
.. DONDE número de fila> 10;
Citado de Comprender Oracle rownum
Debe modificar su consulta de esta manera para que funcione:
select empno
from
(
select empno, rownum as rn
from (
select empno
from emp
order by sal desc
)
)
where rn=2;
EDITAR :he corregido la consulta para obtener el número de fila después el pedido por sal desc