题目描述
有一个部门表 departments 简况如下:
有一个部门员工关系表 dept_emp 简况如下:
有一个薪水表 salaries 简况如下:
请你统计各个部门的工资记录数,给出部门编号 dept_no,部门名称 dept_name 以及部门在 salaries 表里面有多少条记录 sum,要求查询的结果按照 dept_no 升序排列,上述示例的查询结果如下:
答案解析
两种方法,我们可以将三表连续内连接进行查询,也可以使用 WHERE… AND 语句三表关联查询。
最后要使用到 GROUP BY 按照 dept_no 进行分组,并使其按照升序排列(ORDER BY)。
SQL 语句如下:
方法一
SELECT d.dept_no,d.dept_name,COUNT(*) AS `sum`
FROM departments AS d INNER JOIN dept_emp
ON d.dept_no = dept_emp.dept_no
INNER JOIN salaries AS s
ON s.emp_no = dept_emp.emp_no
GROUP BY d.dept_no
ORDER BY dept_no ASC;
方法二
SELECT d.dept_no,d.dept_name,COUNT(*) AS `sum`
FROM departments AS d,dept_emp,salaries AS s
WHERE s.emp_no = dept_emp.emp_no
AND d.dept_no = dept_emp.dept_no
GROUP BY d.dept_no
ORDER BY dept_no ASC;