sql21

1. 题目描述

查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序

(注:可能有employees表和salaries表里存在记录的员工,有对应的员工编号和涨薪记录,但是已经离职了,离职的员工salaries表的最新的to_date!=‘9999-01-01’,这样的数据不显示在查找结果里面)

CREATE TABLE employees (
emp_no int(11) NOT NULL,
birth_date date NOT NULL,
first_name varchar(14) NOT NULL,
last_name varchar(16) NOT NULL,
gender char(1) NOT NULL,
hire_date date NOT NULL, – ‘入职时间’
PRIMARY KEY (emp_no));
CREATE TABLE salaries (
emp_no int(11) NOT NULL,
salary int(11) NOT NULL,
from_date date NOT NULL, – ‘一条薪水记录开始时间’
to_date date NOT NULL, – ‘一条薪水记录结束时间’
PRIMARY KEY (emp_no,from_date));

2 .解法:比较子查询

基本方法:
通过子查询从salaries中读取当前工资、入职时工资,然后作差。但是要注意的是,每个员工的入职时间存在于employees表中,因此查询入职工资的时候需要连接两表。此外,两个子查询返回的表仍需要通过emp_no对齐,这样作差的结果才是每个员工入职以来的薪资涨幅。

select s.emp_no, (s.salary - s2.salary) growth
from (-- 查找当前工资select emp_no, salaryfrom salarieswhere to_date = '9999-01-01'
) s
join (-- 查找入职时的工资select e.emp_no, s1.salaryfrom employees ejoin salaries s1on e.emp_no = s1.emp_noand e.hire_date = s1.from_date
) s2
on s.emp_no = s2.emp_no
order by growth

牛客SQL练习题笔记 -- 连接两次子查询返回表获取员工薪资涨幅相关推荐

  1. 牛客SQL练习题笔记 -- 通配符%和以扩充表的角度理解内连接

    sql28 1. 题目描述 film表 字段 说明 film_id 电影id title 电影名称 description 电影描述信息 CREATE TABLE IF NOT EXISTS film ...

  2. 1024之牛客之错误笔记+uart/IIC/232/485/SPI总结

    目录 牛客之错误笔记: uart/IIC/232/485/SPI总结: 牛客之错误笔记: [1.转义字符    \"                 %%     "是用\转义 % ...

  3. 仿牛客社区项目笔记-帖子模块(核心)

    仿牛客社区项目笔记-帖子模块(核心) 1. 帖子模块 1.1 过滤敏感词 1.2 发布帖子 1.3 帖子详情 1.4 显示评论 1.5 添加评论 1.6 私信列表 1.7 发送私信 1. 帖子模块 分 ...

  4. 【牛客sql实战2】查找入职员工时间排名倒数第三的员工所有信息

    题目描述 查找入职员工时间排名倒数第三的员工所有信息,为了减轻入门难度,目前所有的数据里员工入职的日期都不是同一天 CREATE TABLE `employees` ( `emp_no` int(11 ...

  5. 【sql】牛客网练习题 (共 61 题)

    [1]查找最晚入职员工的所有信息 CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL, `birth_date` date NOT NULL, ` ...

  6. 牛客SQL大厂面试真题——出行场景(滴滴打车)

    昨天我们学习了Mysql的函数,相信大家已经了解到差不多了,接下来跟随我利用牛客网的上的真题对我们学习成果进行检验吧! 上一期博客传送门:Mysql常用函数总结 文章目录 1.2021年国庆在北京接单 ...

  7. 牛客SQL 大厂面试真题 某东商城 6套代码及解析

    3.电商场景(某东商城) SQL168 计算商城中2021年每月的GMV select date_format(event_time,'%Y-%m') as month, round(sum(tota ...

  8. 牛客SQL实战—数据分析必备技能

    1.查找最晚入职员工的所有信息 CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL, `birth_date` date NOT NULL, `f ...

  9. 牛客刷题笔记-数据库选择题(201-300)

    201 在数据库系统中,系统故障造成(C ). 硬盘数据丢失 软盘数据丢失 内存数据丢失 磁带数据丢失 系统故障时,数据库缓冲区(内存)中的内容全被丢失,一些尚未完成的结果可能已送入物理数据库. 20 ...

最新文章

  1. 用形态学的方法实现图像的角点检测
  2. verilog一些小知识点注意事项集合
  3. beanutils工具类_Apache Commons 工具类介绍及简单使用
  4. C语言指针详解----指针声明定义赋值
  5. html5中折叠面板,Ant Design中折叠面板Collapse
  6. 前端学习(1170):findIndex
  7. 天猫国际通过Hologres进行排行榜的实时交互式分析
  8. 作业 给计算机编号 winform
  9. zafu 1461 (DP)
  10. linux:记录一次 处理tomcat启动卡死无报错现象的曲折过程
  11. 艰难前行的故事 (《梦断代码》读后感)
  12. java回车不终止_java 在console行输入一串String后回车,仍无法停止。 下面的程序是计算相似度的,当用户输入关键字后...
  13. CentOS桥接网卡配置
  14. java指定一个具体日期
  15. 计算机系统AD转换,AD和DA转换是什么意思?
  16. Apache服务停止:信号灯超时时间已到,指定的网络名不再可用
  17. SpringSecurity实战(三)-整合SpringSession-Redis
  18. 【在野利用】Apple Mail多个严重漏洞在野利用通告
  19. 图片生成二维码最好的工具
  20. CANOpen协议详解(二):协议具体内容

热门文章

  1. [强化学习代码笔记]Python复习
  2. Docker 安装配置Crowd
  3. 加密算法之MD5与SAH-1
  4. MySql的相关资操作
  5. 什么是增量表,全量表,快照表?
  6. Java和JavaScript有什么区别?
  7. QT painter控件绘制指示灯
  8. 国内量化交易接口为什么券商不对个人提供?
  9. Android手机免root安装Linux+图形化
  10. matlab加速度积分计算速度和位移