SQL22 统计各个部门的工资记录数

本文最后更新于:2022年4月9日 中午


题目描述

统计各个部门的工资记录数,给出部门编码dept_no、部门名称dept_name以及部门在salaries表里面有多少条记录sum

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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`));

输入描述

输出描述

dept_no dept_name sum
d001 Marketing 24
d002 Finance 14
d003 Human Resources 13
d004 Production 24
d005 Development 25
d006 Quality Management 25

题解

1
2
3
4
select de.dept_no, dm.dept_name, count(*) as sum from dept_emp as de 
inner join departments as dm on de.dept_no=dm.dept_no
inner join salaries as s on de.emp_no=s.emp_no
group by de.dept_no

备注:

  1. 第一次连接,将dept_emp表扩展了dept_name列,第二次连接salaries表,再按部门分组统计;
  2. 也可以先dept_emp连接salaries再连接departments