首页 > 试题广场 >

按照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
SELECT
    dept_no,
    GROUP_CONCAT(DISTINCT emp_no ORDER BY emp_no SEPARATOR ',') AS employees
FROM dept_emp
GROUP BY dept_no;

编辑于 2024-04-02 13:04:15 回复(0)
select a.dept_no,
group_concat(emp_no) employees 
from dept_emp a
group by a.dept_no;

编辑于 2024-02-06 11:09:45 回复(0)
# 按照dept_no进行汇总,属于同一个部门的emp_no按照逗号进行连接,结果给出dept_no以及连接出的结果employees

# 注意分组函数使用,不用分隔符: group_concat()

select 
dept_no, 
group_concat(emp_no) as employees
from dept_emp
group by dept_no
order by 1;

发表于 2023-09-12 16:44:43 回复(0)
新知识点:group_concat(字段名 separator  '连接符')
select 
    dept_no
    ,group_concat(emp_no separator ',') as employees
from 
    dept_emp
group by 
    dept_no

发表于 2023-05-24 10:48:10 回复(0)
select 
    dept_no,
    group_concat(emp_no) as employees
from 
    dept_emp
group by 
    dept_no;

-- 默认为逗号分隔符,也可以使用separator指定分隔符
-- 例如  separator '|'    指定|为分隔符

发表于 2023-01-03 21:42:54 回复(0)
select dept_no,group_concat(emp_no separator ',') as 'employees'
from dept_emp
group by dept_no;

发表于 2022-12-24 15:19:39 回复(0)
select dept_no,group_concat(emp_no separator ',') as employees
from dept_emp
group by dept_no;
我就说怎么想都不对呢,原来用了一个我之前没接触过的group_concat函数
发表于 2022-10-20 23:27:33 回复(0)
select dept_no,
group_concat(emp_no separator ',') as employees
from dept_emp
group by dept_no
发表于 2022-09-14 04:02:45 回复(0)
select dept_no,group_concat(emp_no) as employees
from dept_emp
group by dept_no
order by dept_no;
发表于 2022-06-07 09:25:55 回复(0)
msyql 版本5.7 
关于group_concat 函数的说明
group_concat(X,Y),分下面几种情况进行讨论
如果Y无值,则结果默认以【,】进行连接,即 【10001,10002】
如果Y有值,且值为【,】,则连接结果中附带默认值,即【10001,,10002,】
如果Y有值,且值不为【,】,例如Y=【-】,那么结果为【10001-,10002-】
所以,本题答案为
SELECT
	dept_no,
	group_concat(emp_no) employees
FROM
	dept_emp
GROUP BY
	dept_no



发表于 2022-05-11 11:44:35 回复(0)
select dept_no, group_concat(emp_no) employees
from dept_emp
group by dept_No

发表于 2022-04-18 12:47:46 回复(0)
select dept_no,group_concat(emp_no) as employees
from dept_emp
group by dept_no

发表于 2022-04-07 10:14:39 回复(0)
select dept_no,group_concat( distinct emp_no order by emp_no separator ',')
from dept_emp group by dept_no

发表于 2022-03-20 10:43:26 回复(0)
# group_concat(emp_no) 可指定排序,分隔符,默认分隔符为逗号
select dept_no, group_concat(emp_no) as employees
from dept_emp group by dept_no;
发表于 2022-03-17 10:00:48 回复(0)
select dept_no,group_concat(emp_no) as employees
from dept_emp
group by dept_no
group_concat
发表于 2022-03-12 15:41:44 回复(0)
select dept_no,GROUP_CONCAT(emp_no separator ',') from dept_emp group by dept_no order by dept_no asc;
发表于 2022-02-15 13:56:49 回复(0)
SELECT
    dept_no,
    GROUP_CONCAT(DISTINCT emp_no) AS employees
FROM dept_emp
GROUP BY dept_no;

发表于 2022-01-17 18:11:15 回复(0)
group_concat(X,Y)用法:
group_concat()函数返回X的非null值的连接后的字符串。如果给出了参数Y,将会在每个X之间用Y作为分隔符。如果省略了Y,“,”将作为默认的分隔符。每个元素连接的顺序是随机的。
注意:要求连接符就是逗号时,省略Y,不然会出现两个逗号。

发表于 2021-12-07 17:11:56 回复(0)