题解 | #获取员工其当前的薪水比其manager当前薪水还高的相关信息#
获取员工其当前的薪水比其manager当前薪水还高的相关信息
http://www.nowcoder.com/practice/f858d74a030e48da8e0f69e21be63bef
首先查询出员工表的信息:
select em.dept_no,em.emp_no,s.salary,em.to_date from dept_emp em join salaries s on em.emp_no=s.emp_no and em.to_date=s.to_date left join dept_manager ma on em.emp_no=ma.emp_no and em.dept_no=ma.dept_no where ma.dept_no is null
其次查询出经理人的信息: select em.dept_no,em.emp_no,s.salary,ma.to_date from dept_emp em join salaries s on em.emp_no=s.emp_no left join dept_manager ma on em.emp_no=ma.emp_no and em.dept_no=ma.dept_no where ma.dept_no is not null
最后两表连接在一起:(注意两表的连接条件除了to_date,还要部门号一致才具有可比性)
select a.emp_no,b.emp_no,a.salary,b.salary from
(select em.dept_no,em.emp_no,s.salary,em.to_date from dept_emp em join salaries s on em.emp_no=s.emp_no and em.to_date=s.to_date left join dept_manager ma on em.emp_no=ma.emp_no and em.dept_no=ma.dept_no where ma.dept_no is null ) a
join
(select em.dept_no,em.emp_no,s.salary,ma.to_date from dept_emp em join salaries s on em.emp_no=s.emp_no left join dept_manager ma on em.emp_no=ma.emp_no and em.dept_no=ma.dept_no where ma.dept_no is not null) b
on a.to_date=b.to_date where a.salary>b.salary and a.dept_no=b.dept_no