题目描述
统计各个部门的工资记录数, 给出部门编码 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
来源: http://www.bubuko.com/infodetail-3412638.html