第一种方法(自己的答案)
经过测试left join和join在本题中都可以,对于内外连接还不是很懂。
select d.dept_no
, d.dept_name
, count(a.salary)sum
from departments d
left join
    (select de.emp_no
    , de.dept_no
    , sa.salary
    from dept_emp de
    left join salaries sa
    on de.emp_no=sa.emp_no)a
on d.dept_no=a.dept_no
group by d.dept_no, d.dept_name
order by d.dept_no
第二中方法:三表直连,不需要给中间表别名,也不需要剔除中间表的连接键,比较简洁,目前对于逻辑不是特别明确
SELECT d.dept_no, d.dept_name, count(s.salary) AS SUM
FROM departments d JOIN dept_emp de ON d.dept_no = de.dept_no
JOIN salaries s ON de.emp_no = s.emp_no
GROUP BY d.dept_no
ORDER BY d.dept_no ASC