描述
有一个全部员工的薪水表salaries简况如下:
有个各个部门的领导表dept_manager简况如下:
请你查找各个部门当前领导的薪水详情以及其对应部门编号dept_no,输出结果以salaries.emp_no升序排序,并且请注意输出结果里面dept_no列是最后一列,以上例子输出如下:
思考:1.需要有各个部门的领导信息,所以对应到相应的领导就好,然后查看两个表是否有可以只用一张表的情况出现。
2.这一题不知道那个员工属于哪个部门,其实可以直接将两个表进行联合,然后直接选出部门不为空的员工信息,也就是管理者的信息。
select s.emp_no,s.salary,s.from_date,s.to_date,d.dept_no
from salaries s
inner join dept_manager d
ON s.emp_no = d.emp_no #1
group by s.emp_no # 2
order by s.emp_no ASC; #3
按这个情况,1.可以直接用部门和领导表中的员工信息限定取得薪水中的员工信息,采用left join或者right join。
select s.emp_no,s.salary,s.from_date,s.to_date,d.dept_no
from salaries s
right join dept_manager d #或者from dept——manager dm left join salaries s
ON s.emp_no = d.emp_no
where s.to_date = '9999-01-01'
and d.to_date = '9999-01-01'
group by s.emp_no
order by s.emp_no ASC;