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

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

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

拆解问题:
先找到员工的工号和薪水,经理的工号和薪水,再使用dept联结起来两个表

SELECT salaries.emp_no,dept_manager.emp_no AS manager_no,salaries.salary AS emp_salary,s1.salary AS manager_salary
FROM salaries JOIN dept_emp
ON salaries.emp_no=dept_emp.emp_no
JOIN dept_manager
ON dept_emp.dept_no=dept_manager.dept_no
JOIN 
(
    SELECT dept_manager.emp_no,salary
    FROM salaries,dept_manager
    WHERE salaries.emp_no=dept_manager.emp_no
    AND salaries.to_date='9999-01-01'
    AND dept_manager.to_date='9999-01-01')AS s1
ON s1.emp_no=dept_manager.emp_no
WHERE salaries.to_date='9999-01-01'
AND dept_manager.to_date='9999-01-01'
AND salaries.salary>s1.salary

还可以用另外一种写法,看起来更清楚些

SELECT emp_no,manager_no,emp_salary,manager_salary
FROM
(
SELECT de.emp_no,dept_no,salary AS emp_salary
FROM dept_emp AS de INNER JOIN salaries AS s1
ON de.emp_no=s1.emp_no
WHERE de.to_date='9999-01-01'
AND s1.to_date='9999-01-01') AS a
JOIN 
(SELECT dm.emp_no AS manager_no,dept_no,salary AS manager_salary
FROM dept_manager AS dm INNER JOIN salaries AS s2
ON dm.emp_no=s2.emp_no
WHERE dm.to_date='9999-01-01'
AND s2.to_date='9999-01-01') AS b
ON a.dept_no=b.dept_no
WHERE emp_salary>manager_salary
全部评论
这样写虽然正确,但是不够优雅,写得太繁杂了
点赞 回复 分享
发布于 2020-12-03 14:45

相关推荐

不愿透露姓名的神秘牛友
07-03 18:13
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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