感觉我的想法和讨论里的不太一样,不过大同小异哈~
1、首先创建子查询,该子查询中包含emp_no,salary,cnt字段,其中cnt为表salaries与自己比较,薪水小于自己的不重复个数(count(distinct s2.salary));
2、用内连接将employees与子查询连接起来,where中条件为cnt = 2,及工资比自己高(包括自己)的有两人,考虑了工资重复的情况。
注意:不要惯性思维,employees中没有to_date字段,一开始添加了这个条件,一直找不到原因。
select s.emp_no,s.salary,e.last_name,e.first_name from ( select s1.emp_no,s1.salary,count(distinct s2.salary) cnt from salaries s1 inner join salaries s2 on s1.salary <= s2.salary where s1.to_date='9999-01-01' and s2.to_date='9999-01-01' group by s1.salary) s inner join employees e on s.emp_no = e.emp_no where s.cnt = 2