题解 | #获取每个部门中当前员工薪水最高的相关信息#
获取每个部门中当前员工薪水最高的相关信息
https://www.nowcoder.com/practice/4a052e3e1df5435880d4353eb18a91c6
采用over函数直接计算各部门的最高薪水,生成临时表,然后进行筛选—员工薪水等于最高薪水。
select es.dept_no,es.emp_no,es.maxSalary from( select e.emp_no,e.dept_no,s.salary,max(s.salary) over(partition by e.dept_no) maxSalary from dept_emp e join salaries s on e.emp_no=s.emp_no ) es where es.maxSalary=es.salary order by es.dept_no
使用over函数添加一列——各部门的最高薪水,max(s.salary) over(partition by e.dept_no) ,对partition by后面的列dept_no进行分组,分组后计算salary的最大值。
select e.emp_no,e.dept_no,s.salary,max(s.salary) over(partition by e.dept_no) maxSalary from dept_emp e join salaries s on e.emp_no=s.emp_no
运行结果如下图所示,当maxSalary=salary时,就可以筛选出每个部门中当前员工薪水最高的相关信息。