描述
有一个员工表employees简况如下:
有一个薪水表salaries简况如下:
请你查找在职员工自入职以来的薪水涨幅情况,给出在职员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序,以上例子输出为
(注: to_date为薪资调整某个结束日期,或者为离职日期,to_date='9999-01-01'时,表示依然在职,无后续调整记录)
/*题目:
请你查找在职员工自入职以来的薪水涨幅情况,
给出在职员工编号emp_no以及其对应的薪水涨幅growth,
并按照growth进行升序,以上例子输出为
(注: to_date为薪资调整某个结束日期,或者为离职日期,
to_date='9999-01-01'时,表示依然在职,无后续调整记录)
*/
-- 方法一:利用子查询把用户最大值和最小值算出来,然后算最终的涨幅
select a.emp_no,a.maxs-b.mins as growth
from
(
select s1.emp_no,s1.salary maxs
from salaries s1
where s1.to_date = '9999-01-01'
) a
join
(
select s.emp_no,s.salary mins
from employees e
join salaries s
on e.emp_no = s.emp_no
where e.hire_date = s.from_date
) b
on a.emp_no = b.emp_no
order by growth