文章目录

  • 1. 题目描述
    • 1.1 输入
    • 1.2 输出
  • 2. 题目分析及解答
    • 2.1 题目分析
    • 2.2 详细解答

1. 题目描述

1.1 输入

有一个员工表employees简况如下:

有一个薪水表salaries简况如下:

1.2 输出

请你查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序,以上例子输出如下:
(注:可能有employees表和salaries表里存在记录的员工,有对应的员工编号和涨薪记录,但是已经离职了,离职的员工salaries表的最新的to_date!=‘9999-01-01’,这样的数据不显示在查找结果里面,以上emp_no为2的就是这样的)

2. 题目分析及解答

2.1 题目分析

该题难点并不在于将已离职员工的记录从输出结果中排除,而在于求员工的薪水涨幅。一开始可能想当然地以为:growth = MAX(salary) - MIN(salary),但实际上题目中的薪水涨幅是指员工最新日期的薪水减去入职时的薪水,在中间的过程中员工有可能出现降薪的情况,因此员工最新日期的薪水不一定是该员工的最高薪水。
一个相对简洁又利于理解的思路是构造两张表,一张表存放员工入职日期的薪水,另一张表存放员工最新日期的薪水,然后两张表对应的薪水相减即得到员工的薪水涨幅。员工的最新日期,要么是9999-01-01(表示在职),要么是离职日期。只要在员工最新日期薪水表中只存放那些日期为9999-01-01的员工记录,再以emp_no相等为WHERE子句的条件将两张表关联,即可将已离职员工的记录从输出结果中排除。

2.2 详细解答

根据题目分析可直接写出相应的SQL查询语句:

SELECTs1.emp_no,( s2.salary - s1.salary ) AS growth
FROM(SELECTs.emp_no,s.salary FROMemployees AS eJOIN salaries AS s ON e.emp_no = s.emp_no AND e.hire_date = s.from_date ) AS s1,( SELECT s.emp_no, s.salary FROM salaries AS s WHERE s.to_date = '9999-01-01' ) AS s2
WHEREs1.emp_no = s2.emp_no
ORDER BYgrowth;

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

  1. 数据库SQL实战-查找所有员工自入职以来的薪水涨幅情况(mysql)

    1. 查找所有员工自入职以来的薪水涨幅情况 1.1 题目描述 有一个员工表employees简况如下: 有一个薪水表salaries简况如下: 请你查找所有员工自入职以来的薪水涨幅情况,给出员工编号e ...

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

    题目背景: 查找在职员工自入职以来的薪水涨幅情况,给出在职员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序. to_date为薪资调整某个结束日期,或者为离职日期,to ...

  3. 牛客网数据库SQL实战答案解析上篇

    部分解析摘自牛客网讨论分析 查找最晚入职的员工信息 SELECT * FROM employees WHERE hire_date = (SELECT MAX(hire_date) FROM empl ...

  4. 牛客网数据库SQL实战54——查找排除当前最大、最小salary之后的员工的平均工资avg_salary

    牛客网数据库SQL实战54--查找排除当前最大.最小salary之后的员工的平均工资avg_salary 题目描述 查找排除当前最大.最小salary之后的员工的平均工资avg_salary. CRE ...

  5. sql not exists用法_牛客网数据库SQL实战详细剖析(5160)(更新完结)

    文章来源:大数据肌肉猿 作者:无精疯 这是一个系列文章,总共61题,分6期,有答案以及解题思路,并附上解题的一个思考过程. 具体题目可参考牛客网的SQL实战模块: https://www.nowcod ...

  6. sql replace替换多个字符_牛客网数据库SQL实战详细剖析(4150)

    文章来源:大数据肌肉猿 作者:无精疯 这是一个系列文章,总共61题,分6期,有答案以及解题思路,并附上解题的一个思考过程.具体题目可参考牛客网的SQL实战模块:https://www.nowcoder ...

  7. 牛客网数据库SQL实战45—— 将titles_test表名修改为titles_2017

    牛客网数据库SQL实战45-- 将titles_test表名修改为titles_2017 题目描述 将titles_test表名修改为titles_2017. CREATE TABLE IF NOT ...

  8. 牛客网数据库SQL实战14—— 从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略。

    牛客网数据库SQL实战14-- 从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略. 题目描述 从titles表获取按照title进行分组,每组个数大于等于2,给出titl ...

  9. 牛客网数据库SQL实战25—— 获取员工其当前的薪水比其manager当前薪水还高的相关信息

    牛客网数据库SQL实战25-- 获取员工其当前的薪水比其manager当前薪水还高的相关信息 题目描述 获取员工其当前的薪水比其manager当前薪水还高的相关信息,当前表示to_date='9999 ...

  10. 牛客网数据库SQL实战44—— 将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005

    牛客网数据库SQL实战44-- 将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005 题目描述 将id=5以及emp_no=10001的行数据替换成id=5以及em ...

最新文章

  1. 第二阶段冲刺--团队站立会议03
  2. 一看就懂的极简MVVM
  3. 什么是SQL 注入?
  4. 爆破专栏丨Spring Security系列教程之实现CAS单点登录上篇-概述
  5. 高速行车12条技巧,每一条都关乎你的生命
  6. 搭建一个微服务商城到底可以有多快?
  7. Javascript 链式运动框架——逐行分析代码,让你轻松了解运动的原理
  8. 【颅内出血识别问题】数据分析与可视化
  9. html 编辑器插件安装,最新版CKEditor的配置方法及插件(Plugin)编写示例
  10. sql 50道 练习题
  11. matlab cnn 实例,Deep Learning学习 之 CNN代码解析(MATLAB)(示例代码)
  12. 音乐类APP竞品分析报告 酷狗音乐 QQ音乐酷我音乐网易云音乐
  13. 五个优秀的视频格式转换工具
  14. 华为路由器怎么配置DNS?
  15. mysql 语法 日期转换成字符串_mysql日期转换成字符串的方法
  16. 华为p40pro什么时候能用上鸿蒙系统,华为P40 PRO+5G+鸿蒙系统!华为2020年最期待的手机?...
  17. 关于ECW文件格式读取
  18. 【睿慕课点云处理】第一章-基础知识
  19. Python程序设计基础第七章笔记:字符串
  20. 细说Linux的就业方向

热门文章

  1. mis服务器系统,MIS系统中服务器推技术的实现
  2. python计算正数,负数和复数的平方根
  3. 菠萝来啦。新一代VueX 来啦 他有一个特别甜的名字“Pinia”,再不学你就out了【 Pinia/Vuex5中文文档】
  4. 最新 开源 好用的同城投诉爆料平台适合各类公司PHP源码 违法举报 投诉 文明城市 城市经营利器
  5. 软件开发培训要学多久?怎么学?软件开发培训班多少钱?
  6. Spring 团队开源 nohttp;西部数据将中止与华为的战略合作
  7. 洛谷----P3717 [AHOI2017初中组]cover
  8. 离散题目16——自反闭包
  9. CNtV电视直播解析PHP,电视直播
  10. 工具 | 超实用工具listary和snipaste