SQL_219

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

https://www.nowcoder.com/practice/f858d74a030e48da8e0f69e21be63bef

方法一:

思路:

1、先求出非 manager 的员工编号、部门、和薪水。

2、再求出 manager 的员工编号、部门、和薪水。

3、员工和经理间用部门编号 dept_no 关联起来,

代码:

select
    a.emp_no,
    manager_no,
    emp_salary,
    manager_salary
from
    (
        select
            dp.emp_no,
            dp.dept_no,
            s.salary emp_salary
        from
            dept_emp dp,
            salaries s
        where
            dp.emp_no = s.emp_no
            and dp.emp_no not in (
                select
                    emp_no
                from
                    dept_manager
            )
            and s.to_date = '9999-01-01'
    ) a,
    (
        select
            dp.emp_no manager_no,
            dept_no,
            s.salary manager_salary
        from
            dept_emp dp,
            salaries s
        where
            dp.emp_no = s.emp_no
            and dp.emp_no in (
                select
                    emp_no
                from
                    dept_manager
            )
            and s.to_date = '9999-01-01'
    ) b
where
    a.dept_no = b.dept_no
    and a.emp_salary > b.manager_salary

方法二:

思路:

多表联接

代码:

SELECT
    dp.emp_no AS emp_no,
    dr.emp_no AS manager_no,
    s.salary AS emp_salary,
    m.salary AS manager_salary
FROM
    dept_emp dp
    LEFT JOIN dept_manager dr ON dp.dept_no = dr.dept_no
    LEFT JOIN salaries s ON dp.emp_no = s.emp_no
    LEFT JOIN salaries m ON dr.emp_no = m.emp_no
WHERE
    dp.emp_no <> dr.emp_no 
    AND s.salary > m.salary;

全部评论

相关推荐

小叮当411:应该是1-3个月吧
点赞 评论 收藏
分享
屌丝逆袭咸鱼计划:心态摆好,man,晚点找早点找到最后都是为了提升自己好进正职,努力提升自己才是最关键的😤难道说现在找不到找的太晚了就炸了可以鸡鸡了吗😤早实习晚实习不都是为了以后多积累,大四学长有的秋招进的也不妨碍有的春招进,人生就这样
点赞 评论 收藏
分享
评论
6
5
分享

创作者周榜

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