题目描述
统计各个部门的工资记录数,给出部门编码dept_no、部门名称dept_name以及部门在salaries表里面有多少条记录sum
CREATE TABLE `departments` (
`dept_no` char(4) NOT NULL,
`dept_name` varchar(40) NOT NULL,
PRIMARY KEY (`dept_no`));
CREATE TABLE `dept_emp` (
`emp_no` int(11) NOT NULL,
`dept_no` char(4) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));
CREATE TABLE `salaries` (
`emp_no` int(11) NOT NULL,
`salary` int(11) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`from_date`));
输出描述:
![b7ec3bfcb3d3e36687b8d21f6df521bf.png](https://i-blog.csdnimg.cn/blog_migrate/d1e7ac27c59dd1e31a108355e34a59db.png)
解题思路:
(1)部门编码、部门名称以及部门在salaries表的记录,分别在三张表中,这里需要连接多张表;
(2)由题意可以看出,这三张表是使用内连接;
(3)查询部门在salaried表中的记录sum,使用的是count(emp_no),计算出部门编号的总数。
![59b09563f46d466f15e47f60b420d42f.png](https://i-blog.csdnimg.cn/blog_migrate/a51673fee253c1734edabef24ea39149.jpeg)
我是先将三张表连接起来,然后再嵌套一层查询,外层还需要根据dept_no部门编号进行分组统计。