给出每个员工每年薪水涨幅超过5000的员工编号emp_no、薪水变更开始日期from_date以及薪水涨幅值salary_growth,并按照salary_growth逆序排列。
2024-10-19 18:33:30
题目描述
给出每个员工每年薪水涨幅超过5000的员工编号emp_no、薪水变更开始日期from_date以及薪水涨幅值salary_growth,并按照salary_growth逆序排列。
提示:在sqlite中获取datetime时间对应的年份函数为strftime('%Y', to_date)
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`));
输入描述:
无
输出描述:
emp_no | from_date | salary_growth |
---|---|---|
10003 | 1995-12-03 | 24178 |
10008 | 1998-03-11 | 20843 |
10008 | 2000-03-10 | 5997 |
疑惑:
1.每年 : 没有明确的时间段说明,只是限定2018.01.01-2017.12.31 =1 也是一年;而不是考虑时间段为1年
2.每个员工涨薪水的时间不全固定,有可能一年涨两次,有可能两年涨一次,
如何理解 每年薪水涨幅,以及复用salaries表求出每年薪水涨幅超过5000的员工
1、假设s1是涨薪水前的表,s2是涨薪水后的表,因为每个员工涨薪水的时间不全固定,有可能一年涨两次,有可能两年涨一次,所以每年薪水的涨幅,应该理解为两条薪水记录的from_date相同或to_date相同。
/** 如果只限定to_date相同,则将第三条原始测试数据的52668改成62668时,就会少一条【62668-48584=14084】的记录
INSERT INTO salaries VALUES(10008,46671,'1998-03-11','1999-03-11');
INSERT INTO salaries VALUES(10008,48584,'1999-03-11','2000-03-10');
INSERT INTO salaries VALUES(10008, 62668 ,'2000-03-10','2000-07-31'); **/
2、找到s1与s2符合要求的记录后,用s2的薪水减去s1的薪水,用salary_growth表示,加上限定条件 s1.emp_no = s2.emp_no AND salary_growth > 5000,即同一员工每年涨幅超过5000的记录
3、最后依次输出emp_no、from_date、salary_growth,并以salary_growth逆序排列
SELECT s2.emp_no, s2.from_date, (s2.salary - s1.salary) AS salary_growth
FROM salaries AS s1, salaries AS s2
WHERE s1.emp_no = s2.emp_no
AND salary_growth > 5000
AND (strftime("%Y",s2.to_date) - strftime("%Y",s1.to_date) = 1
OR strftime("%Y",s2.from_date) - strftime("%Y",s1.from_date) = 1 )
ORDER BY salary_growth DESC
最新文章
- 应用程序框架实战十一:创建VS解决方案与程序集
- 还是畅通工程[HDU1233]
- H5表单中placeholder属性的字体颜色问题
- 转载好文:如何进行基于情境数据的个性化EDM数据营销
- 如何用ZBrush雕刻出栩栩如生的头发(一)
- 用Swift GestureRecognizer 的几个注意点
- HTML5的fieldset标签
- 如何在Fedora 22上面配置Apache的Docker容器
- uva 11986
- PHP中使用cURL
- HTML5 学习
- Codeforces 540D Bad Luck Island
- KNN算法理解
- 回滚 rollback
- 二维离散平稳小波重构iswt2
- VS2012 百度云下载 开发工具
- CSS学习笔记day1
- windows FileZilla Server 开启FTP over TLS
- WebService之CXF注解报错(二)
- bzoj 2002 弹飞绵羊 分块
热门文章
- Android数据格式化
- Spring-data-redis:特性与实例(转载)
- 后缀自动机的python实现
- Machine Learning No.11: Recommender System
- LightOJ - 1038 Race to 1 Again —— 期望
- 标准兼容HTML5输入框提示信息的插件iHolder_v0.1.06.21.2014_预览版
- js(11)
- Composer基础应用1
- 时间序列数据库概览——基于文件(RRD)、K/V数据库(influxDB)、关系型数据库
- python-unittest单元测试框架