(困难)SQL练习27:给出每个员工每年薪水涨幅超过5000的员工编号emp_no

举报
Python新视野 发表于 2021/09/10 00:24:24 2021/09/10
【摘要】 SQL练习27:给出每个员工每年薪水涨幅超过5000的员工编号emp_no 题目描述考察知识点解题思路 题目描述 给出每个员工每年薪水涨幅超过5000的员工编号 emp_no、薪...

SQL练习27:给出每个员工每年薪水涨幅超过5000的员工编号emp_no

题目描述

给出每个员工每年薪水涨幅超过5000的员工编号 emp_no、薪水变更开始日期 from_date以及薪水涨幅值 salary_growth,并按照 salary_growth 逆序排列。
提示:在 sqlite 中获取 datetime 时间对应的年份函数为 strftime('%Y', to_date)
(数据保证每个员工的每条薪水记录 to_date-from_date=1 年,而且同一员工的下一条薪水记录 from_data= 上一条薪水记录的 to_data )。

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`));

如:插入
INSERT INTO salaries VALUES(10001,52117,'1986-06-26','1987-06-26');
INSERT INTO salaries VALUES(10001,62102,'1987-06-26','1988-06-25');
INSERT INTO salaries VALUES(10002,72527,'1996-08-03','1997-08-03');
INSERT INTO salaries VALUES(10002,72527,'1997-08-03','1998-08-03');
INSERT INTO salaries VALUES(10002,72527,'1998-08-03','1999-08-03');
INSERT INTO salaries VALUES(10003,43616,'1996-12-02','1997-12-02');
INSERT INTO salaries VALUES(10003,43466,'1997-12-02','1998-12-02');

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

考察知识点

自联结ORDER BY时间运算


解题思路

根据题目的要求,可以连接两个工资表,然后根据根据时间和薪资涨幅筛选数据,最后根据 salary_growth 列进行排序。

SELECT s1.emp_no, s2.from_date, (s2.salary - s1.salary) AS salary_growth
FROM salaries AS s1 INNER JOIN salaries AS s2
ON s1.emp_no = s2.emp_no
WHERE YEAR(s2.to_date) - YEAR(s1.to_date) = 1 
AND s2.salary - s1.salary > 5000
ORDER BY salary_growth DESC

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

题目来源:牛客网-SQL数据库实战题

每日打卡,❤ 点个赞再走吧!!!❤

在这里插入图片描述
后续会继续分享 Mysql 方面的文章,如果感兴趣的话可以点个关注不迷路哦~。

文章来源: blog.csdn.net,作者:Dream丶Killer,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/qq_43965708/article/details/113608403

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。