问题:汇总各个部门当前员工的title类型的分配数目,即结果给出部门编号dept_no、dept_name、其部门下所有的员工的title以及该类型title对应的数目count,结果按照dept_no升序排序,dept_no一样的再按title升序排序
拆解问题:
1.先把表2 dept_emp(重命名de)和表1deparments 链接,(重命名a1)
2.把新生成的表a1和titles(重命名t)链接,根据dept_no,dept_name,title分组后对title计数
这一步关键是同时对三列内容依次进行分组后计数,这样就会根据最后分组的title中的各个内容分别计数了。
3.根据dept_no和title排序,写在一个orderby后用,分隔就会默认先根据dept_no排序,再根据title排序
4.提取需要的数据内容即可
总的代码:
select a1.dept_no, a1.dept_name, t.title, count('t.title') as count from
(select de.dept_no, de.emp_no, d.dept_name FROM
dept_emp de
join
departments as d
on de.dept_no=d.dept_no) a1
JOIN
titles t
ON
a1.emp_no=t.emp_no
group by a1.dept_no, a1.dept_name, t.title
order by a1.dept_no, t.title