select e.emp_no,s.salary,e.last_name,e.first_name
from salaries s
left join
employees e
on s.emp_no=e.emp_no
where salary = (
select max(salary)
from salaries
where salary <>(select max(salary) from salaries)
)
利用嵌套max函数求解
select s.emp_no,s.salary,e.last_name,e.first_name
from salaries s
left join
employees e
on s.emp_no=e.emp_no
where s.emp_no in (
select s1.emp_no
from salaries s1
left join
salaries s2
on s1.salary<=s2.salary
group by s1.emp_no
having count(distinct s2.salary)=2
)
利用自连接配合聚合函数count得到排名然后筛选

京公网安备 11010502036488号