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

您所在的位置:网站首页 编号no: (困难)SQL练习27:给出每个员工每年薪水涨幅超过5000的员工编号emp

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

2024-05-12 21:29| 来源: 网络整理| 查看: 265

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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3