题解 | #获取每个部门中当前员工薪水最高的相关信息#
获取每个部门中当前员工薪水最高的相关信息
http://www.nowcoder.com/practice/4a052e3e1df5435880d4353eb18a91c6
同一个部门最高工资可能有多个员工,,要求只输出任意一个,所以下面的思路不行
select dept_no,t2.emp_no,salary as maxSalary
from (
select dept_no,max(salary) maxsal
from dept_emp join salaries on dept_emp.emp_no=salaries.emp_no
group by dept_no
) as t1 join (select emp_no,salary from salaries) as t2 on t1.maxsal=t2.salary
思路:
1.连接dept_emp和salaries,方便后续根据部门分组,来统计工资,或者使用其他操作
2.窗口函数,每个部门根据员工工资进行排名,工资相同,也不能并列排名,然后取出所有排名第一的员工,即工资最高
select dept_no,emp_no,salary as maxSalary
from (
select dept_emp.emp_no,dept_emp.dept_no,salaries.salary,
dense_rank()over(partition by dept_no order by salary desc) as posn
from dept_emp join salaries on dept_emp.emp_no=salaries.emp_no
) as t1
where t1.posn=1