create table emptest
(
deptno number,
ename varchar2(20),
sal number
);
insert into emptest values(1,'王嘻嘻1',15000);
insert into emptest values(1,'王嘻嘻2',1500);
insert into emptest values(1,'王嘻嘻3',115000);
insert into emptest values(1,'王嘻嘻4',12300);
insert into emptest values(2,'王哈哈',14300);
insert into emptest values(2,'王呵呵',16300);
insert into emptest values(2,'王么么',11300);
insert into emptest values(2,'王大大',10300);
commit;
select * from
(
select deptno,ename,sal,
row_number() over(
partition by deptno
order by sal desc) rn
from emptest
)
where rn<=3;