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

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

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

  1. 错误思路:找到每个部门最高的salary,再用该salary直接匹配对应的人
  2. 易错点:没有考虑直接用salary连接,有可能出现不同部门的人有相同salary的情况,因此必须要增加一个限制同部门的条件(重新连一个有部门号、员工号和工资的宽表)
  3. 以下是错误代码示范
select a.dept_no, ss.emp_no, a.salary as maxSalary
from
(
    # 每个部门最高工资
    select dep.dept_no, max(s.salary)as salary
    from salaries as s
    left join 
    (
        select emp_no, dept_no 
        from dept_emp
    )as dep on dep.emp_no = s.emp_no
    group by 1
)as a
left join # 用salary直接找对应的人,错误!
(
    select emp_no, salary 
    from salaries
)as ss on ss.salary = a.salary
order by 1

以下是正确代码:

select a.dept_no, b.emp_no, a.salary as maxSalary
from
(
    # 每个部门最高工资
    select dep.dept_no, max(s.salary)as salary
    from salaries as s
    left join 
    (
        select emp_no, dept_no 
        from dept_emp
    )as dep on dep.emp_no = s.emp_no
    group by 1
)as a
left join
(
    # 部门、员工、工资的宽表
    select s.emp_no, dep.dept_no, s.salary
    from salaries as s
    left JOIN
    (
        select emp_no, dept_no
        from dept_emp
    )as dep on dep.emp_no = s.emp_no
)as b on b.salary = a.salary and b.dept_no = a.dept_no
order by 1

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-01 17:13
想去,但是听说加班强度实在难崩,所以拒绝了,现在有点心梗对面hr感觉也是实习生,打电话的时候怪紧张的,但是感觉人很好嘞
水中水之下水道的鼠鼠:哥们这不先去体验一下,不行再跑呗,大不了混个实习经历(有更好的转正offer就当我没说)
点赞 评论 收藏
分享
流浪的神仙:无恶意,算法一般好像都得9硕才能干算法太卷啦
点赞 评论 收藏
分享
测试糕手手:社会第一课,随便吹牛逼,直接说四个月,别老实。老实人只会被欺负
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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