题解 | #获取每个部门中当前员工薪水最高的相关信息#

select emp_salaries.dept_no,emp_salaries.emp_no,max_salaries.maxSalary from 
    (select d.emp_no,d.dept_no,s.salary from dept_emp as d left join salaries as s on d.emp_no = s.emp_no) as emp_salaries left join
    (select d.dept_no,max(s.salary) as maxSalary from dept_emp as d left join salaries as s on d.emp_no = s.emp_no group by d.dept_no) as max_salaries
    on emp_salaries.dept_no = max_salaries.dept_no
        where emp_salaries.salary = max_salaries.maxSalary
        order by emp_salaries.dept_no asc

还有点复杂,题意如下:获取每个部门中当前员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary,按照部门编号dept_no升序排列,以上例子输出如下:
(注意: Mysql与Sqlite select 非聚合列的结果可能不一样)
思路:
step1: 获取每个部门中当前员工薪水最高的相关信息,创建一个视图,根据group by 找出部门的最大薪水。
step2:创建视图,保留员工,部门,薪水的信息。
step3:用step2中的视图 left join step1中的视图 可以形成 员工,部门,薪水, 部门,最大薪水的新视图
step4:最大薪水和员工薪水相同的保留下来,不同的是错误的记录
step5:别忘了按照部门排序。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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