题目描述
统计各个部门的工资记录数,给出部门编码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`));
select de.dept_no,dp.dept_name,count(s.salary) as sum
from dept_emp de
inner join salaries s
on de.emp_no=s.emp_no
inner join departments dp
on dp.dept_no=de.dept_no
group by de.dept_no,dp.dept_name;
链接:https://www.nowcoder.com/questionTerminal/6a62b6c0a7324350a6d9959fa7c21db3?f=discussion
来源:牛客网
select d.dept_no,d.dept_name,sum(dS.counts)
from departments d inner join
(select de.dept_no,de.emp_no,en.counts
from dept_emp de
inner join
(select emp_no,count(emp_no) as counts from salaries group by emp_no) as en
on de.emp_no = en.emp_no) as ds
on d.dept_no = ds.dept_no
group by d.dept_no;-- 这里group by 和select 子句居然可以不一样