SQL_218

获取所有非manager员工当前的薪水情况

https://www.nowcoder.com/practice/8fe212a6c71b42de9c15c56ce354bebe

方法一:

思路:

先用员工编号 not in 经理表,找出所有员工,join 上部门员工表,join 上工资表,查询出结果即可。

代码:

select
    dp.dept_no,
    e.emp_no,
    salary
from
    (
        select
            emp_no
        from
            employees
        where
            emp_no not in (
                select
                    emp_no
                from
                    dept_manager
            )
    ) e
    left join dept_emp dp on e.emp_no = dp.emp_no
    left join salaries s on dp.emp_no = s.emp_no

方法二:

思路:

①先将部门员工表 dept_emp 和部门 经理表 dept_manager 联结,由 dept_emp 的员工编号和 dept_manager 的员工编号不相等找出非 manager 员工。

②再联结工资表找出工资,记得限定工资表 salaries 和员工表 dept_emp 的时间都为 to_date='9999-01-01'

最后记得按部门编号和员工编号升序

代码:

SELECT
    a.dept_no,
    a.emp_no,
    s.salary
FROM
    (
        SELECT
            de.emp_no,
            de.dept_no
        FROM
            dept_emp de
            INNER JOIN dept_manager dm ON de.dept_no = dm.dept_no
        WHERE
            de.emp_no <> dm.emp_no
            AND de.to_date = '9999-01-01'
    ) a
    INNER JOIN salaries s ON a.emp_no = s.emp_no
WHERE
    s.to_date = '9999-01-01'
order by
    a.dept_no,
    a.emp_no

全部评论

相关推荐

07-07 11:33
江南大学 Java
已经在暑假实习了&nbsp;,没有明确说有hc,纠结实习到八月份会不会有点影响秋招毕竟感觉今年好多提前批
程序员小白条:92的话准备提前批,其他没必要,没面试机会的,而且你要准备充分,尤其八股和算法题
点赞 评论 收藏
分享
05-26 10:24
门头沟学院 Java
qq乃乃好喝到咩噗茶:其实是对的,线上面试容易被人当野怪刷了
找工作时遇到的神仙HR
点赞 评论 收藏
分享
评论
2
1
分享

创作者周榜

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