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

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

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

全部评论

相关推荐

这不纯纯作弊了吗😢😢😢
编程界菜鸡:信这个的这辈子有了,这智商你靠啥都没用
点赞 评论 收藏
分享
06-12 17:46
门头沟学院 Java
运营你豪哥:来说重点: ​1.项目前置,时间倒序。​​ 2.​项目描述强化结果与量化效果(STAR原则里的R)。​​ ​3.个人技能精炼,明确掌握程度,突出核心。​​ ​4.增加强有力开头的个人总结部分。​​ 5.​优化教育背景(成绩排名)、合并奖项与活动。​​
听劝,我这个简历该怎么改...
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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