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

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

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时,就可以筛选出每个部门中当前员工薪水最高的相关信息。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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