题目描述
有一个部门表 departments 简况如下:
有一个部门员工关系表 dept_emp 简况如下:
有一个职称表 titles 简况如下:
汇总各个部门当前员工的 title 类型的分配数目,将部门编号 dept_no,部门名称 dept_name,其部门下所有员工的 title 以及该类型 title 对应的数目 count 查询出,并将结果按照 dept_no 升序排序
答案解析
本题的考察点还是表的连接以及 GROUP BY 分组的使用
表的连接语句比较简单,使用 WHERE… AND 语句,将多表相同字段作为连接条件
本题的分组是先按照部门进行分组,然后在每个分组后的部门中按照员工的 title 再次分组
所以使用的是 GROUP BY A,B
,该语法是先根据 A 进行分组,分组之后再按照 B 分组
本题的 SQL 语句如下:
SELECT
d.dept_no,
d.dept_name,
t.title,
COUNT(*) AS `count`
FROM departments AS d,dept_emp AS de,titles AS t
WHERE d.dept_no = de.dept_no
AND de.emp_no = t.emp_no
GROUP BY d.dept_no,t.title
ORDER BY d.dept_no;