首页 > 试题广场 >

按照dept_no进行汇总

[编程题]按照dept_no进行汇总
  • 热度指数:93437 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
按照dept_no进行汇总,属于同一个部门的emp_no按照逗号进行连接,结果给出dept_no以及连接出的结果employees
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`));
输出格式:
dept_no employees
d001 10001,10002
d002 10006
d003 10005
d004 10003,10004
d005 10007,10008,10010
d006 10009,10010
示例1

输入

drop table if exists  `dept_emp` ; 
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`));
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,'d004','1995-12-03','9999-01-01');
INSERT INTO dept_emp VALUES(10004,'d004','1986-12-01','9999-01-01');
INSERT INTO dept_emp VALUES(10005,'d003','1989-09-12','9999-01-01');
INSERT INTO dept_emp VALUES(10006,'d002','1990-08-05','9999-01-01');
INSERT INTO dept_emp VALUES(10007,'d005','1989-02-10','9999-01-01');
INSERT INTO dept_emp VALUES(10008,'d005','1998-03-11','2000-07-31');
INSERT INTO dept_emp VALUES(10009,'d006','1985-02-18','9999-01-01');
INSERT INTO dept_emp VALUES(10010,'d005','1996-11-24','2000-06-26');
INSERT INTO dept_emp VALUES(10010,'d006','2000-06-26','9999-01-01');

输出

d001|10001,10002
d002|10006
d003|10005
d004|10003,10004
d005|10007,10008,10010
d006|10009,10010
头像 余青青
发表于 2020-09-27 20:27:30
聚合函数group_concat(X,Y),其中X是要连接的字段,Y是连接时用的符号,可省略,默认为逗号。此函数必须与GROUP BY配合使用。此题以dept_no作为分组,将每个分组中不同的emp_no用逗号连接起来(即可省略Y)。答案:SELECT dept_no,group_concat(em 展开全文
头像 此用户名涉嫌违规
发表于 2021-03-18 15:14:00
题目描述:按照dept_no进行汇总,属于同一个部门的emp_no按照逗号进行连接,结果给出dept_no以及连接出的结果employees。 知识点总结:group_concat()函数将group by产生的同一个分组中的值连接起来,返回一个字符串结果。 语法:group_concat( [di 展开全文
头像 高质量搬砖人
发表于 2021-01-31 10:17:42
方法)聚合函数group_concat(X,Y) SELECT dept_no, group_concat(emp_no)AS employees FROM dept_emp GROUP BY dept_no; -- 聚合函数group 展开全文
头像 jiang_dr
发表于 2021-10-27 09:35:24
思路: 刚开始想的是使用 GROUP BY + CONCAT() 来解决,但是转念一想,CONCAT也无法确定参数的个数啊,故此这种方法貌似不行。 然后发现了 GROUP_CONCAT() 函数,可以将分组中的所有字符串给列出来,并且正好也是默认以 "," 拼接。 GROUP_ 展开全文
头像 Ding_123
发表于 2021-12-03 18:55:25
知识点 group_concat([distinct] 列名 [order by 排序字段] [Separator '分隔符'])分隔符默认为, 代码 select dept_no, group_concat(emp_no) as employees from dept_emp group b 展开全文
头像 牛客112736836号
发表于 2021-07-17 11:40:33
【初次尝试】select dept_no, concat(emp_no,",") from dept_emp group by dept_noconcat并不是一个聚合函数,没有把一个部门的所有员工的员工号聚集在一起【修改后代码】select dept_no, group_con 展开全文
头像 Java编程白哥
发表于 2023-03-15 08:24:29
方法一:思路:①连接同一列字段:group_concat( [distinct] <要连接的字段> [order by 排序字段 asc/desc ] [separator '分隔符'] ) 。分隔符可以选择省略,省略时默认为逗号,这里还是写出来了。另外还有一点需要注意,group_co 展开全文
头像 英俊的大老虎孤寡孤寡
发表于 2021-07-31 10:27:42
MySQL写法:SELECT dept_no,group_concat(emp_no SEPARATOR ',')FROM dept_empGROUP BY dept_no SQLite写法:SELECT dept_no,group_concat(emp_no,',')FROM dept_empGR 展开全文
头像 沈雾浓
发表于 2022-01-19 18:22:30
使用常规方法嗯想,终于想出来了 具体思路: 先将表格进行排序,然后根据具体的序号想出之后之后字符串拼接的次数 当序号为1时,返回自己本身 当序号为2时,返回自己本身拼接上一个 当序号为3时,返回自己本身拼接上一个在拼接上上一个 会得到一个相同部门然后拼接名字为三角形依次增加的结果 现在依旧解决不掉问 展开全文
头像 JanisZhan
发表于 2022-06-27 17:24:23
//group_concat(需要选取且连接的列名,'连接符号') select dept_no,group_concat(emp_no) as employees from dept_emp group by dept_no