当我拿到这样一道题,我的内心是崩溃的~

给出每个员工每年薪水涨幅超过5000的员工编号emp_no、薪水变更开始日期from_date以及薪水涨幅值salary_growth,并按照salary_growth逆序排列。
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`));
跟往常一样先拆分问题~
1、员工编号emp_no,薪水变更开始日期from_date,涨幅值salary_growth是要展示出来的
2、每年薪水涨幅超过5000 这里就要用到两张表的对比,算出涨幅值,注意‘每年’一词
3、按照salary_growth逆序排列
分析:对于‘每年’的划分,是将日期中的年份分离出来相减等于1. (用strftime('%Y', to_date)函数)
#这样问题就迎刃而解啦~
select s2.emp_no,s2.from_date,(s2.salary-s1.salary) salary_growth
from salaries s1,salaries s2
where s1.emp_no= s2.emp_no and (s2.salary-s1.salary)>5000
and strftime('%Y', s2.to_date)- strftime('%Y',s1.to_date) = 1
order by salary_growth DESC;









暂无数据