SQL 25) 获取员工其当前的薪水比其manager当前薪水还高的相关信息

获取员工其当前的薪水比其manager当前薪水还高的相关信息

http://www.nowcoder.com/questionTerminal/f858d74a030e48da8e0f69e21be63bef

方法)子查询分别找出员工&经理工资,再连结两表比较工资

SELECT a2.emp_no, a1.emp_no AS manager_no, a2.emp_salary, a1.manager_salary
FROM
( SELECT s1.salary AS manager_salary, dm.emp_no, dm.dept_no  -- 查询当前manager工资
FROM salaries AS s1, dept_manager AS dm
WHERE s1.emp_no = dm.emp_no
AND s1.to_date = '9999-01-01'
AND dm.to_date = '9999-01-01') a1
JOIN 
( SELECT s.salary AS emp_salary, de.emp_no, de.dept_no  -- 查询员工工资
FROM salaries AS s, dept_emp AS de
WHERE s.emp_no = de.emp_no
AND s.to_date = '9999-01-01'
AND de.to_date = '9999-01-01') a2
ON a1.dept_no = a2.dept_no
WHERE a2.emp_salary > a1.manager_salary;

天知道我报了多少遍错...表一多就容易选错列

21/3/25 更新 更简洁的代码 一遍过

方法)多表连接,连结两次salaries表来分别表示经理和员工的工资

select s1.emp_no, s2.emp_no as manager_no, s1.salary , s2.salary
from dept_emp as de join dept_manager as dm on de.dept_no = dm.dept_no
                    join salaries as s1 on s1.emp_no = de.emp_no
                    join salaries as s2 on s2.emp_no = dm.emp_no
where s2.emp_no != s1.emp_no
and s1.salary > s2.salary
and s1.to_date = '9999-01-01'
and s2.to_date = '9999-01-01';
全部评论
where s2.emp_no != s1.emp_no多余判断,工资不等必定不是同一人
1 回复 分享
发布于 2021-09-24 15:49

相关推荐

但听说转正率很低,我现在有在实习了,好纠结要不要去
熬夜脱发码农:转正率低归低,但是实习的经历你可以拿着,又不是说秋招不准备了
点赞 评论 收藏
分享
人力小鱼姐:实习经历没有什么含金量,咖啡店员迎宾这种就别写了,其他两段包装一下 想找人力相关的话,总结一下个人优势,结合校园经历里有相关性的部分,加一段自我评价
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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