2021/2/13 [SQL]获取所有部门中当前员工当前薪水最高的相关信息

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

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

解题思路

  1. 看似复杂,其实这题的解题思路与《查找入职员工时间排名倒数第三的员工所有信息》 类似,都可以使用笛卡尔积去比较。
  2. 根据 emp_no 内联 dept_emp 表和 salaries 表为 A 表,然后再同样根据 emp_no 内联一次 dept_emp 表和 salaries 表称为 B 表,然后 A 表和 B 表根据部门编号 dept_no 进行笛卡尔积,比较 A 表和 B 表的相同部门内的工资,如果 A 表工资比 B 表工资低,用 COUNT() 函数计数一次,最后计算出来数值为 0 的说明在同一部门内没有人比自己(即 A 表)工资高。(如果为 1 说明自己是第二高,2 说明自己是第三高)

代码实现

SELECT d1.dept_no, d1.emp_no, s1.salary maxSalary 
FROM dept_emp d1
LEFT JOIN salaries s1
ON d1.emp_no = s1.emp_no
WHERE (
    SELECT count(*)
    FROM dept_emp d2
    LEFT JOIN salaries s2
    ON d2.emp_no = s2.emp_no
    WHERE d1.dept_no = d2.dept_no
    AND s1.salary < s2.salary
) < 1
ORDER BY d1.dept_no;
全部评论
A表和 B 表应该根据部门编号 dept_no 进行条件筛选才对
1 回复 分享
发布于 2021-02-27 17:26

相关推荐

有趣的牛油果开挂了:最近这个阶段收到些杂七杂八的短信是真的烦
点赞 评论 收藏
分享
冷艳的小师弟在看机会:jd测评乱点直接被挂了,哭死~
点赞 评论 收藏
分享
评论
3
收藏
分享
牛客网
牛客企业服务