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

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

http://www.nowcoder.com/practice/4a052e3e1df5435880d4353eb18a91c6

1、首先进行表连接,连接字段是部门表的员工编号和工资表的员工编号,这样就可以将员工和其工资以及部门对应起来

2、因为题目要求在职员工,所以添加限制条件d.to_date='9999-01-01'

3、以上两步初步筛选出用于分析的数据,选择需要的字段部门编号(dept_no),工资(salary),员工编号(emp_no),以及使用窗函数对工资进行降序排名,这里使用rank()是并列跳跃排名,就是允许存在多个相同名次,但是下一个名次按前面的总人数计算,例如1134557。

窗函数over(patition by dept_no order by salary),新建窗口将表格按照部门进行分组,工资降序排列,配合rank()函数实现了将各部门员工工资降序排列。

4、最后将上表作为查询对象,取需要的字段,以及筛选条件,就是工资排名为1的员工,最后在根据部门编号升序排列。

完整代码如下:

select dept_no,e,salary
from(
	select dept_no,
    salary,
    d.emp_no as e,
    rank()over(partition by dept_no order by salary desc) rk
	from dept_emp d
	join salaries s
	on d.emp_no=s.emp_no
	where d.to_date='9999-01-01'
    ) m
where m.rk=1
order by dept_no
全部评论

相关推荐

HNU_fsq:建议直接出国,这简历太6了。自愧不如
点赞 评论 收藏
分享
jack_miller:杜:你不用我那你就用我的美赞臣
点赞 评论 收藏
分享
2 收藏 评论
分享
牛客网
牛客企业服务