Para explicar esse comportamento, precisamos entender como o Oracle processa ROWNUM. Ao atribuir ROWNUM a uma linha, o Oracle inicia em 1 e só incrementa o valor quando uma linha é selecionada; isto é, quando todas as condições da cláusula WHERE são atendidas. Como nossa condição exige que ROWNUM seja maior que 2, nenhuma linha é selecionada e ROWNUM nunca é incrementado além de 1.
A linha inferior é que condições como as seguintes funcionarão conforme o esperado.
.. WHERE rownum =1;
.. WHERE rownum <=10;
Enquanto as consultas com essas condições sempre retornarão zero linhas.
.. WHERE rownum =2;
.. WHERE rownum> 10;
Citado em Entendendo o Oracle rownum
Você deve modificar sua consulta desta forma para funcionar:
select empno
from
(
select empno, rownum as rn
from (
select empno
from emp
order by sal desc
)
)
where rn=2;
EDITAR :corrigi a consulta para obter o rownum depois o pedido por sal desc