题目描述

给出每个员工每年薪水涨幅超过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

最新文章

  1. 应用程序框架实战十一:创建VS解决方案与程序集
  2. 还是畅通工程[HDU1233]
  3. H5表单中placeholder属性的字体颜色问题
  4. 转载好文:如何进行基于情境数据的个性化EDM数据营销
  5. 如何用ZBrush雕刻出栩栩如生的头发(一)
  6. 用Swift GestureRecognizer 的几个注意点
  7. HTML5的fieldset标签
  8. 如何在Fedora 22上面配置Apache的Docker容器
  9. uva 11986
  10. PHP中使用cURL
  11. HTML5 学习
  12. Codeforces 540D Bad Luck Island
  13. KNN算法理解
  14. 回滚 rollback
  15. 二维离散平稳小波重构iswt2
  16. VS2012 百度云下载 开发工具
  17. CSS学习笔记day1
  18. windows FileZilla Server 开启FTP over TLS
  19. WebService之CXF注解报错(二)
  20. bzoj 2002 弹飞绵羊 分块

热门文章

  1. Android数据格式化
  2. Spring-data-redis:特性与实例(转载)
  3. 后缀自动机的python实现
  4. Machine Learning No.11: Recommender System
  5. LightOJ - 1038 Race to 1 Again —— 期望
  6. 标准兼容HTML5输入框提示信息的插件iHolder_v0.1.06.21.2014_预览版
  7. js(11)
  8. Composer基础应用1
  9. 时间序列数据库概览——基于文件(RRD)、K/V数据库(influxDB)、关系型数据库
  10. python-unittest单元测试框架