SQL> select e.rm,e.last_name, e.salary from (select rownum rm, e.last_name,e.salary from employees e order by e.salary desc) e where e.rm>3 and e.rm<6;
本来想通过上述语句,查询薪资排名4,5的两个人,的确显示了结果:

然后我单独运行了子查询(下图):的确是按照薪资排序的,但它的伪列是按照employees表排的,这样的话 上面的查询第4第5名薪资的查询就有问题了,它查出来的是employees表的排序4、5的两个人,而不是薪资排名4、5的两个人。
select rownum rm, e.last_name,e.salary from employees e order by e.salary desc;

上面的查询是把rownum放在子查询里,然后我试了一下放在外面:但是放在外面的话变成 top—N,查前几名还查得出来,但是查中间就不行了。
select rownum,e.last_name, e.salary from (select e.last_name,e.salary from employees e order by e.salary desc) e where rownum>3 and rownum<6;

请问老师:我要正确的查出薪资排名4、5的人,语句应该怎么写。