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

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

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

这道题 考察的是多表查询和窗口函数 先将dept_emp和salaries进行左外链接 得到 每个部门员工薪水

	a.emp_no,
	a.dept_no,
	b.salary
FROM
	dept_emp a
	LEFT JOIN salaries b ON a.emp_no = b.emp_no

得到结果如下 alt

然后使用窗口函数 dense_rank()窗户函数进行排名排序,分组是dept_no,按照salary进行降序排序

SELECT
	a.emp_no,
	a.dept_no,
	b.salary,
	dense_rank() over(partition by a.dept_no order by b.salary desc) as rank1
FROM
	dept_emp a
	LEFT JOIN salaries b ON a.emp_no = b.emp_no

得到 按照部门分类的薪资排序表 如图alt 然后子查询这个表,将rank1=1的筛选出来即可

select
a.dept_no,
a.emp_no,
a.salary as maxSalary
from 
(SELECT
	a.emp_no,
	a.dept_no,
	b.salary,
	dense_rank() over(partition by a.dept_no order by b.salary desc) as rank1
FROM
	dept_emp a
	LEFT JOIN salaries b ON a.emp_no = b.emp_no)a
where rank1=1
order by dept_no

如图 alt

全部评论

相关推荐

头像
不愿透露姓名的神秘牛友
05-27 11:41
已编辑
点赞 评论 收藏
转发
2 收藏 评论
分享
牛客网
牛客企业服务