查找当前薪水排名第二多的员工,不使用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' )
浙公网安备 33010602011771号