步骤
1、给原始查询语句加别名如temp
2、将temp中的rownum查出来
3、设定rownum范围
建表:
--创建新表
create table Staff_information
(
staff_id number(6) primary key, --员工编号
staff_name varchar(255), --员工姓名
staff_department varchar(255), --员工部门
staff_position varchar(255), --员工职位
staff_salary number(6,2) --员工工资
);
1、查询各个部门的经理中谁的工资最高
select * from
(
select * from
(
select * from staff_information --第一步:选取出职位是 '经理' 的所有数据
where staff_position='经理'
)
order by staff_salary desc --第二步:将结果集再按照 '工资' 进行 降序 排序
)
where rownum=1; --第三步:选取排好序的结果集的第一条数据
2、查询工资最高的前五名
select * from
(
select * from staff_information order by staff_salary desc --按照工资进行 降序 排序
)
where rownum<=5; --选取结果集的前五条
3、查询所有员工的工资排名第 2-6 名的信息
select * from
(
select rownum num,temp.* from
(
select * from staff_information order by staff_salary desc --第一步:按照工资从高到低进行排序
)
temp
where rownum<=6 --第二步:选取出前六行
)
where num>=2 and num<=6; --第三步:选取 2-6 行
类推,2 和 6 可以换成 m ,n ,只要 n > m 即可
over.