方法一:

思路:

这里三表 join,根据部门编号 dept_no 和部门名称 dept_name 分组,用 count 聚合出结果即可。

代码:

select
    ds.dept_no,
    ds.dept_name,
    count(salary) sum
from
    departments ds
    left join dept_emp dp on ds.dept_no = dp.dept_no
    left join salaries s on dp.emp_no = s.emp_no
group by
    ds.dept_no,
    ds.dept_name
order by
    ds.dept_no

方法二:

思路:

思路:将 departments 和 dept_emp 联结(左联结内联结都可以),得到员工对应的部门编号和部门名称后,再联结 salaries 表,通过对部门分组,得到每组工资数。

代码:

SELECT
    a.dept_no,
    a.dept_name,
    count(salary) AS sum FROM (
        SELECT
            d.dept_no,
            de.emp_no,
            d.dept_name
        FROM
            dept_emp de
            LEFT JOIN departments d ON de.dept_no = d.dept_no
    ) a
    INNER JOIN salaries s ON a.emp_no = s.emp_no
GROUP BY
    a.dept_no
order by
    a.dept_no