SQL字符串的分组聚合

SQL字符串的分组聚合

我们在开发过程中有时需要对表中的数据进行分组,又需要查询出具体信息。
本文中用到的是 group_concat() 函数
作用:
函数返回一个字符串结果,该结果由分组中的值连接组合而成。(多条数据,同样拼接在一个字符串中)
语法:

group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’] )

例如:有张用户表user,数据如下图
select * from user;
SQL字符串的分组聚合_第1张图片
1.需要查询年龄相同的人员信息并展示具体名称(默认以,分割)

select 
	account_id, age, 
	group_concat(name) as name, SUM(money) money 
from user 
	GROUP BY age

SQL字符串的分组聚合_第2张图片

2.需要查询年龄相同的人员信息并展示具体名称,名称按照money从小到大排序,分隔值为-

select 
	account_id, age, 
	group_concat(name ORDER BY money SEPARATOR '-') as name, SUM(money) money 
from user 
	GROUP BY age

SQL字符串的分组聚合_第3张图片
3.需要查询年龄相同的并展示具体人员信息和金额,名称按照money从小到大排序

select 
	account_id, age, 
	group_concat(CONCAT_WS('*', name, money) ORDER BY money ) as name, SUM(money) money 
from user 
	GROUP BY age

SQL字符串的分组聚合_第4张图片

另外介绍一下CONCAT_WS() 函数
作用:
将有分隔符的字符串连接起来,表示列之间有指定间隔返回,不会受其中任意一个列的影响,有空值时会忽略空值,其他列组合进行返回。
语法:

CONCAT_WS(separator,str1,str2,)

使用参数:

separator参数为间隔参数;

string1,string2代表字符串,参数同样也是可以是n分割值。

返回值:

注意:函数会忽略任何分隔符参数后的 NULL 值。

你可能感兴趣的:(sql,数据库,mysql)