题目描述
给出每个员工每年薪水涨幅超过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`));
解题方案
本题的考察的是如何去理解每年薪水涨幅超过5000,每年薪水涨幅可能是一次也可能是多次,所以我们这里使用from_date或to_date相差为一年则代表题目中的要求,根据上述描述即可解决本题。
select s1.emp_no,s1.from_date,(s1.salary-s2.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',s1.from_date)-strftime('%Y',s2.from_date)=1)
or
(strftime('%Y',s1.to_date)-strftime('%Y',s2.to_date)=1))
order by salary_growth desc