解题思路
#第一步:链接表departments,dept_emp,获取dept_no,dept_name
select d1.dept_no,d1.dept_name,d2.emp_no
from departments as d1
inner join dept_emp as d2
on d1.dept_no=d2.dept_no
where d2.to_date='9999-01-01';
#第二步:获取titles表中的title
select emp_no,title
from titles
where to_date='9999-01-01';
#第三步:链接上面两表
select a1.dept_no,a1.dept_name,a2.title,count(a2.title) as count
from
(
select d1.dept_no,d1.dept_name,d2.emp_no,d2.from_date,d2.to_date
from departments as d1
inner join dept_emp as d2
on d1.dept_no=d2.dept_no
where d2.to_date='9999-01-01') as a1
inner join
(
select emp_no,title,from_date,to_date
from titles
where to_date='9999-01-01') as a2
on a1.emp_no=a2.emp_no
where a2.to_date='9999-01-01'
group by a1.dept_no,a1.dept_name,a2.title
order by a1.dept_no;
#注意1:记得添加过滤条件where a2.to_date='9999-01-01'
#注意2:只按部门分组,不符合题意输出结果,要添加多条件分组实现代码
select a1.dept_no,a1.dept_name,a2.title,count(a2.title) as count
from
(
select d1.dept_no,d1.dept_name,d2.emp_no,d2.from_date,d2.to_date
from departments as d1
inner join dept_emp as d2
on d1.dept_no=d2.dept_no
where d2.to_date='9999-01-01') as a1
inner join
(
select emp_no,title,from_date,to_date
from titles
where to_date='9999-01-01') as a2
on a1.emp_no=a2.emp_no
where a2.to_date='9999-01-01'
group by a1.dept_no,a2.title
order by a1.dept_no; 
京公网安备 11010502036488号