大家来看看标准的~
1、salaries和dept_no表内连接,按照emp_no分组,并求出分组后每个emp_no的最后工资截至日期即max(d.to_date),建立由“员工”以及“该员工最后工资截止日期”两列组成的新表new_s
2、salaries和dept_no表内连接,再与新表new_s连接,筛选工资截至日期为“该员工最后工资截止日期”的行,这样就得到了包含所有员工截止日期、截至日期工资等组成的宽表。最后,按照部门分组,并选择每组最大截至日期工资为maxSalary。
select d.dept_no dept_no,s.emp_no dept_no,max(s.salary) maxSalary
from salaries s
inner join dept_emp d
on s.emp_no = d.emp_no
inner join
(
select d.emp_no d_em,max(d.to_date) d_m
from salaries s
inner join dept_emp d
on s.emp_no = d.emp_no
group by d.emp_no
) new_s
on d.emp_no = new_s.d_em
where s.to_date = new_s.d_m
group by d.dept_no
order by d.dept_no asc;