题解 | #获取当前薪水第二多的员工的emp_no以及其对应的薪水salary#

 select emp_no,salary,last_name,first_name from 
 (select e.emp_no,salary,last_name,first_name from employees as e join salaries as s on e.emp_no = s.emp_no) as ss,
 (select MAX(salary) as result_salary from 
 (select e.emp_no,salary,last_name,first_name from employees as e join salaries as s on e.emp_no = s.emp_no) as f_emp,
 (select MAX(salary) as max_salary from salaries) as max_salary 
 where f_emp.salary != max_salary.max_salary
)as r_salary where ss.salary = r_salary.result_salary

不让用group by,暂时没有想通考点是什么,就当坐一个脑筋急转弯吧。
step 1,创建一个视图 max_salary,记录最大的薪水
step 2,创建一个视图 f_emp,连接起来记录员工信息,
step 3,连接max_salary 和 f_emp 视图,设置条件where 为剔除最大的薪水,然后Max求得第二多的薪水,新视图定义为 r_salary
step 4, 在创建一个员工信息的视图ss,和step2的视图一样,然后连接step3的视图r_salary,设置条件ss的薪水等于r_salary的第二大薪水,最后筛选出来的都是第二多薪水的员工集合

全部评论

相关推荐

1jian10:48h没写面评会变成这样
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务