select de.dept_no, dept_name, title, count(*) count from dept_emp de join departments d on de.dept_no = d.dept_no join ( select * from titles where to_date = '9999-01-01' ) t on de.emp_no = t.emp_no group by de.dept_no, dept_name, title order by dept_no, title;
由于连接条件其实具备两头筛选的功能,因此在职称表中筛选出来目前生效的职称后,还可以通过join连接在职员工号,因为若某员工没有当前生效的职称也不会出现在连接后的结果表中。因此把这个where筛选放在用于连接的子表中,直接就筛选出来了目前在职的且有有效职称的员工。(当然,该思路未考虑有员工在职却无有效职称的情况)