牛客网数据库5:统计各个部门的工资记录数,给出部门编码dept_no、部门名称dept_name以及次数sum

本文介绍了一种使用SQL查询来统计不同部门中员工的工资记录数量的方法。通过联接多个表,如部门表、员工部门分配表和薪资表,可以得出每个部门的工资记录总数。此查询涉及的数据表包括departments、dept_emp和salaries。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目描述

统计各个部门的工资记录数,给出部门编码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 子句居然可以不一样

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值