select rk.emp_no,rk.salary,e.last_name,e.first_name from employees as e right join (select emp_no, salary from salaries where salary =(select max(salary) from salaries where salary != (select max(salary) from salaries))) as rk on e.emp_no = rk.emp_no
select e.emp_no,s.salary,e.last_name,e.first_name from employees as e left join salaries as s on e.emp_no = s.emp_no where salary =(select max(salary) from salaries where salary != (select max(salary) from salaries))
SQL217 获取当前薪水第二多的员工的emp_no以及其对应的薪水salary
1、逻辑:
系统答案:找工资NO.1值 → 工资NO.2值( ) → 子连接且工资=NO.2的
我的答案:找工资NO.1值 → 工资NO.2值(max+where!=) →工资NO.2的工号→ 子连接补齐信息
2、注意:
①where 后面不能用聚合函数,如where max(字段)是不行的
②select emp,max()...group by()...having max() 这样不是找公司max值,而是每个员工的max值

京公网安备 11010502036488号