方法一:
思路:
这里三表 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