题目要求:查找薪水排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不能使用order by完成。

个人思路:与之前的题目相同,需考虑多人领取相同金额的薪水。这里不能用order by,可以考虑用max套用max查询出第二高的薪水。

代码

select s.emp_no,
       s.salary, 
       e.last_name, 
       e.first_name
from salaries s join employees e on s.emp_no=e.emp_no
where s.salary =(select max(salary) as salary
                 from salaries
                 where salary < (select max(salary) from salaries)
                )

运行时间:40ms, 占用内存5428KB。应该再考虑怎么再优化一下。