牛客网专题SQL206 获取每个部门中当前员工薪水最高的相关信息

Posted 掂掂三生有幸

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了牛客网专题SQL206 获取每个部门中当前员工薪水最高的相关信息相关的知识,希望对你有一定的参考价值。

文章目录

前言

🍖🍖🍖🍖🍖🍖🍖🍖🍖🍖
在刷题之前我想首先介绍一下牛客,以便没有使用过的小伙伴能够快速入手,牛客网是国内最大的算法、面试、招聘网站,涵盖了多种大厂面试真题以及题解,里面大佬云集,各种题目的解决方案层出不穷,绝对能让你大开眼界,而且牛客是你在人生中不同的阶段都能对你有所帮助的编程软件(完全免费),如果感兴趣可以访问注册一下

访问链接:牛客-国内最大的刷题网站

🍖🍖🍖🍖🍖🍖🍖🍖🍖🍖

一 牛客介绍

1.1 首页

1.2 各大厂真题

1.3 面试题库

1.4 题目灵活

二 选择题目练习

2.1 编辑界面介绍

2.2 题目要求


三 题目知识点汇总

这题主要的知识点就是对join的应用,考察对不同连接的理解。
左,右,内,外全连接:

  • 左连接:表1 left join 表2 on 表1.字段=表2.字段 (以表1为准,表2进行匹配)
  • 右连接:表1 right join 表2 on 表1.字段=表2.字段 (以表2为准,表1进行匹配)
  • 全连接:表1 union all 表2 (表1 和表2的列数必须一样多,union 去除重复项,union all 不剔除重复项)
  • 内连接:表1 inner join 表2(取表1和表2相交部分)
  • 外连接:表1 full outer join 表2 (取表1和表2不相交的部分)

3.1 题目解读

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

a、在职员工:to_date=‘9999-01-01’
b、薪水涨幅:不能用最大的薪资-最小的薪资,因为存在降薪情况,应该用最近日期的薪资-入职日期的薪资。

3.1.2 给出在职员工编号emp_no以及其对应的薪水涨幅growth,

表头
emp_no:
growth:当前薪资(to_date='9999-01-01’的薪资)-入职薪资(from_date=hire_date的薪资)

3.1.3并按照growth进行升序

ORDER BY growth
题目中隐含的坑:即为涨幅的定义,我最开始的解法是直接拿最高薪资-最低薪资,这样做,当然是错的啦~

四、解题步骤

分两步走即可:首先根据已有的信息创建两张子表,分别是当前薪资表和入职薪资表;接着关联两张子表(这里注意要使用内连接哦~),用当前薪资表的薪资减去入职薪资表的薪资即为薪资增幅。
STEP1:创建两张薪资子表

SELECT emp_no,salary FROM salaries WHERE to_date='9999-01-01' #当前薪资表 t1
SELECT salaries.emp_no,salary FROM salaries JOIN employees WHERE hire_date=from_date #入职薪资表 t2

STEP2(完整代码):内关联两张表并求薪资差,并按照growth升序

SELECT emp_no,t1.salary-t2.salary AS growth
FROM (SELECT emp_no,salary FROM salaries WHERE to_date='9999-01-01')t1 #当前薪资表
INNER JOIN (SELECT salaries.emp_no,salary FROM salaries JOIN employees WHERE hire_date=from_date)t2 #入职薪资表
USING(emp_no) ORDER BY growth;

4.1 提交答案

牛客访问链接:牛客-国内最大的刷题网站

本篇文章结束了哦,看到这里那么你对牛客有什么了解呢欢迎评论~

以上是关于牛客网专题SQL206 获取每个部门中当前员工薪水最高的相关信息的主要内容,如果未能解决你的问题,请参考以下文章

牛客网SQL-第九题-获取所有非manager的员工emp_no

牛客网SQL-第九题-获取所有非manager的员工emp_no

牛客网SQL-第8题-找出所有员工当前具体的薪水salary情况

牛客网SQL-第8题-找出所有员工当前具体的薪水salary情况

牛客网SQL-第8题-找出所有员工当前具体的薪水salary情况

牛客网SQL-第8题-找出所有员工当前具体的薪水salary情况