题解22 | #统计各个部门的工资记录数#
统计各个部门的工资记录数
http://www.nowcoder.com/practice/6a62b6c0a7324350a6d9959fa7c21db3
第一种方法(自己的答案)
经过测试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