查找当前薪水排名第二多的员工,不使用order by完成

第二多本身就存在一个排序的问题,但是题目中不允许用order by,那就只能用其他的排序的函数,除去最大值的最大值就是第二大的值,分段来写,不使用内连接的话。也有两种形式

select e.emp_no,s.salary,e.last_name,e.first_name
from salaries s, employees e
where e.emp_no = s.emp_no 
and  s.to_date='9999-01-01'
and s.salary = (select max(salary)
                from salaries
                where salary!=(select max(salary) 
                              from salaries 
                              where to_date='9999-01-01'
                             )
                        and to_date='9999-01-01'
                )
select e.emp_no,max(s.salary),e.last_name,e.first_name
from salaries s, employees e
where e.emp_no = s.emp_no 
and  s.to_date='9999-01-01'
and  s.salary in (select salary
                from salaries
                where salary!=(select max(salary) 
                              from salaries 
                              where to_date='9999-01-01'
                             )
                        and to_date='9999-01-01'
                )

 

posted @ 2020-09-21 09:30  莫妮卡小粉红  阅读(151)  评论(0)    收藏  举报