题目描述

有一个部门表 departments 简况如下:

汇总各个部门当前员工的title类型的分配数目 - 图1

有一个部门员工关系表 dept_emp 简况如下:

汇总各个部门当前员工的title类型的分配数目 - 图2

有一个职称表 titles 简况如下:

汇总各个部门当前员工的title类型的分配数目 - 图3

汇总各个部门当前员工的 title 类型的分配数目,将部门编号 dept_no,部门名称 dept_name,其部门下所有员工的 title 以及该类型 title 对应的数目 count 查询出,并将结果按照 dept_no 升序排序

汇总各个部门当前员工的title类型的分配数目 - 图4

答案解析

本题的考察点还是表的连接以及 GROUP BY 分组的使用
表的连接语句比较简单,使用 WHERE… AND 语句,将多表相同字段作为连接条件
本题的分组是先按照部门进行分组,然后在每个分组后的部门中按照员工的 title 再次分组
所以使用的是 GROUP BY A,B ,该语法是先根据 A 进行分组,分组之后再按照 B 分组

本题的 SQL 语句如下:

  1. SELECT
  2. d.dept_no,
  3. d.dept_name,
  4. t.title,
  5. COUNT(*) AS `count`
  6. FROM departments AS d,dept_emp AS de,titles AS t
  7. WHERE d.dept_no = de.dept_no
  8. AND de.emp_no = t.emp_no
  9. GROUP BY d.dept_no,t.title
  10. ORDER BY d.dept_no;