Untuk menjelaskan perilaku ini, kita perlu memahami bagaimana Oracle memprosesROWNUM. Saat menetapkan ROWNUM ke sebuah baris, Oracle mulai dari 1 dan hanya menambah nilai ketika sebuah baris dipilih; yaitu, ketika semua kondisi dalam klausa WHERE terpenuhi. Karena kondisi kami mengharuskan ROWNUM lebih besar dari 2, tidak ada baris yang dipilih dan ROWNUM tidak pernah bertambah melebihi 1.
Intinya adalah kondisi seperti berikut ini akan berfungsi seperti yang diharapkan.
.. WHERE rownum =1;
.. WHERE rownum <=10;
Sementara kueri dengan kondisi ini akan selalu mengembalikan nol baris.
.. WHERE rownum =2;
.. WHERE rownum> 10;
Dikutip dari Memahami Oracle rownum
Anda harus mengubah kueri Anda dengan cara ini agar berfungsi:
select empno
from
(
select empno, rownum as rn
from (
select empno
from emp
order by sal desc
)
)
where rn=2;
EDIT :Saya telah mengoreksi kueri untuk mendapatkan rownum setelah pesanan melalui sal desc