首页 > 试题广场 >

汇总各个部门当前员工的title类型的分配数目

[编程题]汇总各个部门当前员工的title类型的分配数目
  • 热度指数:310346 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
有一个部门表departments简况如下:
dept_no dept_name
d001 Marketing
d002 Finance

有一个,部门员工关系表dept_emp简况如下:
emp_no
dept_no 
from_date 
to_date
10001 d001
1986-06-26 9999-01-01
10002 d001
1996-08-03 9999-01-01
10003 d002 1995-12-03 9999-01-01


有一个职称表titles简况如下:
emp_no title form_date to_date
10001 Senior Engineer 1986-06-26 9999-01-01
10002
Staff 1996-08-03 9999-01-01
10003
Senior Engineer
1995-12-03 9999-01-01


汇总各个部门当前员工的title类型的分配数目,即结果给出部门编号dept_no、dept_name、其部门下所有的员工的title以及该类型title对应的数目count,结果按照dept_no升序排序,dept_no一样的再按title升序排序
dept_no
dept_name
title count
d001
Marketing
Senior  Engineer 1
d001
Marketing
Staff 1
d002
Finance
Senior  Engineer
1

示例1

输入

drop table if exists  `departments` ; 
drop table if exists  `dept_emp` ; 
drop table if exists  titles ;
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 titles (
`emp_no` int(11) NOT NULL,
`title` varchar(50) NOT NULL,
`from_date` date NOT NULL,
`to_date` date DEFAULT NULL);
INSERT INTO departments VALUES('d001','Marketing');
INSERT INTO departments VALUES('d002','Finance');
INSERT INTO dept_emp VALUES(10001,'d001','1986-06-26','9999-01-01');
INSERT INTO dept_emp VALUES(10002,'d001','1996-08-03','9999-01-01');
INSERT INTO dept_emp VALUES(10003,'d002','1995-12-03','9999-01-01');
INSERT INTO titles VALUES(10001,'Senior Engineer','1986-06-26','9999-01-01');
INSERT INTO titles VALUES(10002,'Staff','1996-08-03','9999-01-01');
INSERT INTO titles VALUES(10003,'Senior Engineer','1995-12-03','9999-01-01');

输出

d001|Marketing|Senior Engineer|1
d001|Marketing|Staff|1
d002|Finance|Senior Engineer|1
头像 数据分析阿宇君
发表于 2020-08-28 20:26:06
先上正确代码 select d.dept_no, d.dept_name, t.title, count(t.title)as count from departments d,dept_emp de,titles t where de.emp_no=t.e 展开全文
头像 高质量搬砖人
发表于 2021-01-30 10:34:19
方法)三表连结分组 SELECT d.dept_no, d.dept_name, t.title, COUNT(t.emp_no) FROM departments AS d, dept_emp AS de, titles AS t WHERE d.dept_no = de.dept_no AND 展开全文
头像 yjiewei
发表于 2020-12-29 15:53:37
-- 先连接两张表拿到dept_no,dept_name,以及后面需要和另外一个表连接的emp_no (select d.dept_no,d.dept_name,de.emp_no from departments as d left join dept_emp de on 展开全文
头像 码码猫
发表于 2021-08-05 17:30:40
select de.dept_no,d.dept_name,t.title,count(t.title) as countfrom departments d join dept_emp de on d.dept_no=de.dept_nojoin titles t on de.emp_no=t.e 展开全文
头像 此用户名涉嫌违规
发表于 2021-04-09 16:31:18
题目描述:汇总各个部门当前员工的title类型的分配数目,即结果给出部门编号dept_no、dept_name、其部门下所有的员工的title以及该类型title对应的数目count,结果按照dept_no升序排序。 最开始是想用窗口函数来解决: select d.dept_no, d 展开全文
头像 N刻后告诉你
发表于 2020-05-19 20:36:38
题目:汇总各个部门当前员工的title类型的分配数目,结果给出部门编号dept_no、dept_name、其当前员工所有的title以及该类型title对应的数目count,当前是指’9999-01-01’隐含要求:dept_no按照升序排列 错误示范:SELECT里面的子查询出现了两个列:titl 展开全文
头像 数据流动DataFlow
发表于 2023-03-13 00:01:55
方法一:思路:门员工关系表 dept_emp 与职称表 titles 进行连接,查询当前员工的部门编号,title,在 group by dept_no 和 title,算出对应的数目 count。最后把查询出来的结果 join 部门表 departments,把部门名称 dept_name 加入到 展开全文
头像 你我皆牛马啊
发表于 2021-10-28 11:28:37
-- 窗口函数count,注意distinct 窗口函数不聚合故要distinct SELECT distinct de.dept_no, dp.dept_name, t.title, count(t.title) over(partition by de.dept_no,t.title ord 展开全文
头像 牛客464722063号
发表于 2022-03-24 11:03:56
select dept_emp.dept_no,d.dept_name,t.title,count(t.title) c  from dept_emp left join departments d on&nb 展开全文
头像 foxmo
发表于 2021-11-21 10:17:17
select d.dept_no,d.dept_name,t.title,count(*) as count from dept_emp de inner join departments d on de.dept_no = d.dept_no inner join titles t on de.e 展开全文