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

2021-10-18 牛客网SQL21--查找在职员工自入职以来的薪水涨幅情况 牛客网SQL21–查找在职员工自入职以来的薪水涨幅情况 题目描述 有一个员工表employees简况如下: 有一个薪水表salaries简况如下: 请你查找在职员工自入职以来的薪水涨幅情况,给出在职员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序,以上例子输出为 (注: to_date为薪资调整某个结束日期,或者为离职日期,to_date='9999-01-01’时,表示依然在职,无后续调整记录) 解答 题目理解 在职员工自入职以来的薪水涨幅: 首先员工必须是在职员工 阅读详情

题目较难,纳入错题本。
如果思路不正确,就会无从下手。

1. 题目

2. 题解

薪资涨幅 = 当前工资 - 入职工资

当前工资 :to_date = '9999-01-01'
入职工资:hire_date

问题是如何构造出这两个字段(没思路就卡这里了)

分别从两张表中利用这个信息,然后让两张表分别与工资表进行连接,最后正在外表中求取两者差值。
(因为被日期限制死了,所以不需要分组或者DISTINCT进行去重)

简单来说,连接过程就是 (A-B) - (B - C),这里B代表salaries表格,用了两次。

(其实后面用 A-B-C的方式和更加简单,一次JOIN 就增加了一个字段)

完整过程如下:

在这里插入代码片# # 入职工资
# SELECT s.emp_no, s.salary
# FROM salaries s
# JOIN employees e 
# ON s.emp_no = e.emp_no AND e.hire_date = s.from_date

# # 当前工资
# SELECT s.emp_no, s.salary
# FROM salaries s
# JOIN employees e 
# ON s.emp_no = e.emp_no AND s.to_date = '9999-01-01'

SELECT min_salary.emp_no, max_salary.salary - min_salary.salary growth
FROM(
    SELECT s.emp_no, s.salary
    FROM salaries s
    JOIN employees e 
    ON s.emp_no = e.emp_no AND e.hire_date = s.from_date  
    ) min_salary
JOIN (
SELECT s.emp_no, s.salary
FROM salaries s
JOIN employees e 
ON s.emp_no = e.emp_no AND s.to_date = '9999-01-01'
      ) max_salary
ON min_salary.emp_no = max_salary.emp_no
ORDER BY growth ASC

一种更为简单,也更可取的方法:

直接 使用的 A-B-C连接方法!

# 方法1:一步到位

SELECT e.emp_no, (a.salary - b.salary) AS growth
FROM employees e
    JOIN salaries a 
    ON e.emp_no = a.emp_no AND a.to_date = '9999-01-01'
    JOIN salaries b 
    ON e.emp_no = b.emp_no AND b.from_date = e.hire_date
ORDER BY growth ASC;

# # 方法2:朴素做法

# # 分别构造出 包含 employee 对应 last_salary、employee 对应 first_salary 的这两张表,最后利用employee 进行内连接

# SELECT a.emp_no, (a.salary - b.salary) AS growth
# FROM (SELECT e.emp_no, s.salary FROM employees e JOIN salaries s ON e.emp_no = s.emp_no WHERE to_date = '9999-01-01') AS a
#     JOIN (SELECT e.emp_no, s.salary FROM employees e JOIN salaries s ON e.emp_no = s.emp_no WHERE from_date = e.hire_date) AS b
#     ON a.emp_no = b.emp_no
# ORDER BY growth

注:因为是 INNER JOIN ,所以 a.to_date = '9999-01-01'和b.from_date = e.hire_date是可以放在 ON 后面(而不一定需要WHERE)进行限制的。

反思:一个原始字段如何创造出多个字段

开始思路被阻断在 如何 利用 salary 这个字段创造出两个不同的字段,
毕竟使用行过滤一次也只能找出一个 对应的 salary,可是问题的求解需要 新(当前salary) 、 **旧(初始salary)**两个字段。
解决办法只有一个,多次使用JOIN,使用ON 进行不同的条件限制,就能找出相应的条件下的 salary。

牛客 数据库SQL实战 查找所有员工自入职以来的薪水涨幅情况 题目描述:\color{blue}题目描述:题目描述: 查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序 CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL, `birth_date` date NOT NULL, `first_name` varchar(14) NOT... 阅读详情

相关推荐

牛客-SQL篇-全部题目-SQL215查找在职员工自入职以来的薪水涨幅情况

请你查找在职员工自入职以来的薪水涨幅情况,给出在职员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序,以上例子输出为。(注: to_date为薪资调整某个结束日期,或者为离职日期,to_date='9999-01-01'时,表示依然在职,无后续调整记录)

SunshineLu2019的博客 956

sql实战:使用sql计算工资涨幅?

“雇员表“中记录了员工的信息,“薪水表“中记录了对应员工发放的薪水。两表通过“雇员编号”关联。查找当前所有雇员入职以来的薪水涨幅,给出雇员编号以及其对应的薪水涨幅,并按照薪水涨幅进行升序。 (注:薪水表中结束日期为2004-01-01的才是当前员工,否则是已离职员工) -- 入职薪水 select a.雇员编号 ,薪水 as last_salary from 雇员表 a inner join 薪水表 b on a.雇员编号 = b.雇员编号 where 雇用日期 = 起始日期 and

weixin_44976611的博客 2322

INCA软件操作指南:手把手教你生成和解析DCM标定数据文件

本文详细介绍了INCA软件在汽车ECU开发中生成和解析DCM标定数据文件的全流程。从A2L文件导入到DCM文件生成,再到HEX文件导出,手把手教你掌握标定数据处理的实用技巧,包括参数标定、曲线标定和常见问题排查,帮助工程师提升工作效率。

weixin_29271053的博客 1058

牛客--SQL21.查找在职员工自入职以来的薪水涨幅情况

题目: 有一个员工表employees简况如下: 有一个薪水表salaries简况如下: 请你查找在职员工自入职以来的薪水涨幅情况,给出在职员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序,以上例子输出为 (注: to_date为薪资调整某个结束日期,或者为离职日期,to_date='9999-01-01'时,表示依然在职,无后续调整记录) 题目简单总结为:查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅gro...

华辰烟雨的博客 833

Understand-Anything:AI驱动的代码知识图谱,实现项目全局洞察与高效导航

在软件开发中,理解复杂代码库的结构和依赖关系是提升开发效率的关键。传统代码阅读方式往往陷入局部视角,难以快速把握系统全貌。知识图谱技术通过将代码实体(如文件、类、函数)及其关系(调用、继承、依赖)可视化,为代码理解提供了全局视角。这项技术的核心价值在于将静态代码转化为动态、可交互的认知地图,极大降低了系统学习与维护成本。在实际工程中,它广泛应用于新成员快速入职、遗留系统梳理、架构影响分析等场景。本文介绍的Understand-Anything工具,正是基于这一理念,通过多智能体分析管道,自动构建代码的结构图

weixin_42615290的博客 883

ESXI 8.0虚拟机安装OpenWRT软路由详细教程

OpenWrt 是嵌入式的 Linux 路由器固件,OpenWrt在稳定运行的同时提供了强大的扩展能力,用户可以完全的定制属于自己的路由系统,满足不一样的个性化需求,本文讲解如何使用ESXI安装OpenWRT,打造属于自己的软路由。本次安装使用的是版本。默认登录信息:用户:root密码:password下载固件:https://github.com/haiibo/OpenWrt/releases/tag/X86_64【CPU配置】:4核心。

qq_27121281的博客 3915

牛客SQL学习 _16_215 查找在职员工自入职以来的薪水涨幅情况

【代码】牛客SQL学习 _16_215 查找在职员工自入职以来的薪水涨幅情况。

taiyuezyh的博客 176

金蝶云星空核心数据表解析与高效关联查询指南

本文深入解析金蝶云星空核心数据表结构,提供高效关联查询的实战指南。文章详细介绍了基础资料、业务单据和财务模块的关键表及其关联逻辑,重点阐述了如何利用关联表(_LK表)进行跨单据溯源,并分享了编写高性能SQL的实用技巧与避坑建议,帮助开发者、实施顾问和数据分析师快速掌握数据查询方法,提升工作效率。

weixin_29254673的博客 526

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

企业存在问题,没有明确面试流程,想一出是一出,一会要你线上面试,一会要你线下面试,hr不理人,没有基本的专业素养,即便你面试都能答出来也不一定会要你,投的是武汉。专业比较冷门的博懂得都懂秋招有多难,能在工业界有人要你就是好了,现在根本没啥只要学历不看对口的企业了,反正找来找去最高薪的也就45w多一些。一共投递九家公司,其中约面六家公司,实际参。成立于21年9月,网上资料是显示是株洲所的供电业务搬到了重庆,与重庆轨道,重庆开投集团都有很多订单,hr说朝九晚五双休,我感觉双休能保证,朝九晚五不太好说,特别。

每天多一点干货 1014

《UE4游戏开发》之 《查cook资源失败,问题记录》

当项目打包时,cook出错,但是从原始引擎提供的信息中,没有提示具体的那个资源出错,要查到出错资源,还是非常麻烦。 下面就材质cook出错,增加一些日志,方便查找问题做简单记录 材质cook的一个阶段,是收集MaterialShaderMap,如果在这个阶段收集的信息出错,将会在FShaderMapContent::GetOutdatedTypes函数中,因为Shaders指针指向的内存有问题而出错,通过断点发现,FShaderMapContent这个类对象指针为null,而这个类对象的来源于AllMat.

qq_21919621的博客 2580

vue 获取el-table多选的选中行

<el-table :data='tableData' ref="multipleTable" v-loading='loading' border max-height='700' style='width: 100%' size="mini"> <el-table-column type="selection" width="55"></el-table-column> <el-table-column label

且听风吟的博客 6649

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

使用join查询方式找出没有分类的电影id以及其电影名称。

11 213

【3D目标检测】激光雷达和相机联合标定(一)——ROS同步解包

激光雷达和相机联合标定(一)——ROS同步解包

qq_44703886的博客 4235

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

题目: 查找在职员工自入职以来的薪水涨幅情况_牛客题霸_牛客网 有一个员工表employees简况如下: emp_no birth_date first_name last_name gender hire_date 10001 1953-09-02 Georgi Facello M 2001-06-22 10002 1964-06-02 Bezalel Simmel ...

weixin_43955488的博客 629

【OpenAirInterface知识-3】OAI端到端部署之5G基站部署

在上一篇文章中已经完成了5G核心网的部署,本篇文章将介绍OAI 5G基站的部署过程。

起名字难上难的博客 3422

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

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

文章目录一、题目二、解题思路1.JOIN ON 一、题目 有一个员工表employees简况如下: 有一个薪水表salaries简况如下: 请你查找在职员工自入职以来的薪水涨幅情况,给出在职员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序,以上例子输出为 (注: to_date为薪资调整某个结束日期,或者为离职日期,to_date='9999-01-01’时,表示依然在职,无后续调整记录) 二、解题思路 1.JOIN ON (1)使用 employees 和 s1 .

weixin_38196290的博客 358

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

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

描述 有一个员工表employees简况如下: 有一个薪水表salaries简况如下: 请你查找在职员工自入职以来的薪水涨幅情况,给出在职员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序,以上例子输出为 (注: to_date为薪资调整某个结束日期,或者为离职日期,to_date='9999-01-01'时,表示依然在职,无后续调整记录) /*题目: 请你查找在职员工自入职以来的薪水涨幅情况, 给出在职员工编号emp_no以及其对应的薪水涨幅g

qq_28841515的博客 389

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

牛客网刷题笔记-SQL 21 查找在职员工自入职以来的薪水涨幅情况

SQL 21 查找在职员工自入职以来的薪水涨幅情况 有一个员工表employees简况如下: 有一个薪水表salaries简况如下: 请你查找在职员工自入职以来的薪水涨幅情况,给出在职员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序,以上例子输出为 (注: to_date为薪资调整某个结束日期,或者为离职日期,to_date='9999-01-01’时,表示依然在职,无后续调整记录) ———————————————————————————————————————————

qq_39211004的博客 169

sql实战21:查找所有员工自入职以来的薪水涨幅情况

sql实战21:查找所有员工自入职以来的薪水涨幅情况 文章目录sql实战21:查找所有员工自入职以来的薪水涨幅情况题目描述:题解:题目思路:参考题解 题目描述: 查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序 (注:可能有employees表和salaries表里存在记录的员工,有对应的员工编号和涨薪记录,但是已经离职了,离职的员工salaries表的最新的to_date!='9999-01-01',这样的数据不显示在查找结果里面)

以码平川的博客 1409

查找在职员工自入职以来的薪水涨幅情况【SQL练习题】

查找在职员工自入职以来的薪水涨幅情况【SQL练习题】

yunAike的博客 928

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

sql实战 查找所有员工自入职以来的薪水涨幅情况问题描述Sql语句 问题描述 查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序 (注:可能有employees表和salaries表里存在记录的员工,有对应的员工编号和涨薪记录,但是已经离职了,离职的员工salaries表的最新的to_date!=‘9999-01-01’,这样的数据不显示在查找结果里面) CREATE TABLE employees ( emp_no int(11) N

allin的博客 1238

牛客日常刷题记录之:SQL220 查找在职员工自入职以来的薪水涨幅情况

请你查找在职员工自入职以来的薪水涨幅情况(注意这里强调的是在职员工),给出在职员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序,以上例子输出为。(注: to_date为薪资调整某个结束日期,或者为离职日期,to_date='9999-01-01'时,表示依然在职,无后续调整记录)因为我们要求的结果只与这两个字段相关,通过这两个字段就能求出我们想要的结果,所以只用取这两个字段。也就是员工被雇佣那一天与工资表上的某段记录的那天对的上,那行记录的工资就是员工入职的工资。

2401_84838416的博客 941

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

查找在职员工自入职以来的薪水涨幅情况 最近在练习sql语句 这是牛客网上的一道sql题目: 有一个员工表employees简况如下: 有一个薪水表salaries简况如下: 请你查找在职员工自入职以来的薪水涨幅情况,给出在职员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序,以上例子输出为 (注: to_date为薪资调整某个结束日期,或者为离职日期,to_date='9999-01-01’时,表示依然在职,无后续调整记录) 看到这,有一点思路,就是找出最低薪酬和最高薪酬,

weixin_44721967的博客 851

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

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。描述有一个员工表employees简况如下:有一个薪水表salaries简况如下:请你查找在职员工自入职以来的薪水涨幅情况,给出在职员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序,以上例子输出为。

pleaseprintf的博客 961

题解-牛客网-SQL-SQL(SQL21)查找所有员工自入职以来的薪水涨幅情况

文章目录1. 题目描述1.1 输入1.2 输出2. 题目分析及解答2.1 题目分析2.2 详细解答 1. 题目描述 1.1 输入 有一个员工表employees简况如下: 有一个薪水表salaries简况如下: 1.2 输出 请你查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序,以上例子输出如下: (注:可能有employees表和salaries表里存在记录的员工,有对应的员工编号和涨薪记录,但是已经离职了,离职的员工salar

清溪醉客的博客 937
上一篇: SQL22 统计各个部门的工资记录数
下一篇: SQL19 查找所有员工的last_name和first_name以及对应的dept_name
Robin_Pi
博客等级 码龄9年 2万+粉丝 632原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值