SQL9
题目描述
统计各个部门的工资记录数,给出部门编码dept_no、部门名称dept_name以及次数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`));
解题思路:
首先题目要求统计各个部门的工资记录,自然联想到要用到group by 分组和count(salary)统计次数。
但是这些信息不在同一张表中,所以用到数据关联查询,以部门表为主体,关联表dept_emp和表salaries
故参考答案为:
select ds.dept_no,ds.dept_name,count(s.salary)as sum from departments ds
left join dept_emp dp on ds.dept_no=dp.dept_no
left join salaries s on dp.emp_no=s.emp_no
group by ds.dept_no