题解 | #汇总各个部门当前员工的title类型的分配数目#
汇总各个部门当前员工的title类型的分配数目
http://www.nowcoder.com/practice/4bcb6a7d3e39423291d2f7bdbbff87f8
select de.dept_no,dept_name,title,count(*) `count`
from departments de,dept_emp e,titles t
where de.dept_no = e.dept_no and (t.emp_no = e.emp_no)
GROUP BY de.dept_no , t.title
ORDER BY de.dept_no , t.title
这个题目思路出来了就不难了。
思路:首先我们先把部门和员工一一对应(de.dept_no = e.dept_no),然后员工和titles对应(t.emp_no = e.emp_no),这样就实现了三表关联了,而且一一对应。
问题描述中有一个要求是(汇总各个部门当前员工的title类型的分配数目),可以发现进行分组的话,显然只对部门分组时不行的,因为一个部门可以有多种title类型,到了这里应该意识到还要进一步对title类型分组(GROUP BY de.dept_no , t.title),这样就实现了每个部门的每种title类型的个数(count(*)),最后按照要求排序就可以了。