SQL_215

查找在职员工自入职以来的薪水涨幅情况

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

方法一:

思路:

这题不是单纯求工资的最大值减最小值。 而是员工当前薪资减去入职时的薪资。

①先创建两个子查询,分别找出所有员工当前的薪水(如子查询 a)和所有员工入职时的薪水(如子查询 b)

②a,b 子查询运用的方法都是一样的,联结 employees 表和 salaries 表,左联结内联结都可以,子查询 a 限定条件直接为当前时间 '9999-01-01',子查询 b 限定条件为入职时间,每个员工入职时间不一样,所以要使用谓词 in 找出在工资表里所有员工对应的最小时间。最后 a,b 子查询都要对员工编号进行分组。

③最后将这两个子查询联结,联结条件为 a.emp_no = b.emp_no,再按照题目要求对薪水涨幅进行升序排序。

代码:

SELECT
    a.emp_no,
    (a.salary - b.salary) AS growth
FROM
    (
        SELECT
            e.emp_no,
            max(s.salary) salary
        FROM
            employees e
            LEFT JOIN salaries s ON e.emp_no = s.emp_no
        WHERE
            s.to_date = '9999-01-01'
        GROUP BY
            s.emp_no
    ) a,
    (
        SELECT
            e.emp_no,
            min(s.salary) salary
        FROM
            employees e
            LEFT JOIN salaries s ON e.emp_no = s.emp_no
        WHERE
            s.to_date IN (
                SELECT
                    min(to_date)
                FROM
                    salaries s
                GROUP BY
                    s.emp_no
            )
        GROUP BY
            s.emp_no
    ) b
WHERE
    a.emp_no = b.emp_no
ORDER BY
    growth ASC;

方法二:

思路:

思路也是先查找如入职的工资,和当前在职工资,求差值即可。 但是这里只用了 salaries 这一张表

代码:

select
    a.emp_no,
    (a.salary - b.salary) growth
from
    (
        select
            emp_no,
            salary
        from
            salaries
        where
            to_date = '9999-01-01'
    ) a,
    (
        select
            emp_no,
            salary
        from
            salaries
        where
            to_date in (
                select
                    min(to_date)
                from
                    salaries
                group by
                    emp_no
            )
    ) b
where
    a.emp_no = b.emp_no
order by
    growth

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-07 14:00
不想多说了,什么逆天HR,还要教我礼貌😂
机械打工仔:这不纯傻卵吗,他还操心上别人老板了
投递BOSS直聘等公司7个岗位
点赞 评论 收藏
分享
点赞 评论 收藏
分享
头顶尖尖的程序员:我是26届的不太懂,25届不应该是找的正式工作吗?为什么还在找实习?大四还实习的话是为了能转正的的岗位吗
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-07 13:35
虽然不怎么光彩,经过这件事,可能我真的要去认同“面试八股文早该淘汰!不会用AI作弊的程序员=新时代文盲!”这句话了
HellowordX:Ai的出现是解放劳动力的,不是用来破坏公平竞争环境的,这样下去,轻则取消所有线上面试,严重了会影响整个行业对所有人产生影响,企业会拉高入职考核各种离谱考核会层出不穷
你找工作的时候用AI吗?
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

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