题目描述

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

统计各个部门的工资记录数 - 图1

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

统计各个部门的工资记录数 - 图2

有一个薪水表 salaries 简况如下:

统计各个部门的工资记录数 - 图3

请你统计各个部门的工资记录数,给出部门编号 dept_no,部门名称 dept_name 以及部门在 salaries 表里面有多少条记录 sum,要求查询的结果按照 dept_no 升序排列,上述示例的查询结果如下:

统计各个部门的工资记录数 - 图4

答案解析

两种方法,我们可以将三表连续内连接进行查询,也可以使用 WHERE… AND 语句三表关联查询。
最后要使用到 GROUP BY 按照 dept_no 进行分组,并使其按照升序排列(ORDER BY)。
SQL 语句如下:
方法一

  1. SELECT d.dept_no,d.dept_name,COUNT(*) AS `sum`
  2. FROM departments AS d INNER JOIN dept_emp
  3. ON d.dept_no = dept_emp.dept_no
  4. INNER JOIN salaries AS s
  5. ON s.emp_no = dept_emp.emp_no
  6. GROUP BY d.dept_no
  7. ORDER BY dept_no ASC;

方法二

  1. SELECT d.dept_no,d.dept_name,COUNT(*) AS `sum`
  2. FROM departments AS d,dept_emp,salaries AS s
  3. WHERE s.emp_no = dept_emp.emp_no
  4. AND d.dept_no = dept_emp.dept_no
  5. GROUP BY d.dept_no
  6. ORDER BY dept_no ASC;