SQL53 按照dept_no进行汇总

本文最后更新于:2022年4月9日 中午


题目描述

按照dept_no进行汇总,属于同一个部门的emp_no按照逗号进行连接,结果给出dept_no以及连接出的结果employees

1
2
3
4
5
6
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
2
3
4
select dept_no,group_concat(emp_no) as employees from dept_emp group by dept_no;

-- mysql写法
select dept_no,group_concat(emp_no SEPARATOR ',') from dept_emp group by dept_no;

备注:

  1. SQLite的聚合函数group_concat(x[,y])

    该函数返回一个字符串,该字符串将会连接所有非NULL的x值。该函数的y参数将作为每个x值之间的分隔符,如果在调用时忽略该参数,在连接时将使用缺省分隔符”,”。再有就是各个字符串之间的连接顺序是不确定的。

  2. mysql的 group_concat函数:

    group_concat( [DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator ‘分隔符’] )

参考文章:

SQLite 聚合函数中的 group_concat():https://blog.csdn.net/langzxz/article/details/16807859

mysql之group_concat函数详解:https://blog.csdn.net/u012620150/article/details/81945004