我们在数据开发的过程中,经常会遇到这样的需求,就是将多行合并为一行,并且用特定字符隔开。
在hive里面,用concat_ws函数处理
格式: concat_ws(‘分隔符’,collect_set/collect_list(字段))
参数释义:
SQL脚本: select school,concat_ws(',',collect_set(name)) from student group by school;
GROUP_CONCAT(字段 分隔符)
注意:MySQL在GROUP_CONCAT函数中,去重需要使用distinct 关键字,如果需要先排序再合并,也可以使用order by 关键字。
select school,GROUP_CONCAT(name,',') from student group by school;
补充:还有几种扩展
①可以给类别去重
SELECT group_id,GROUP_CONCAT(DISTINCT category) FROM `sqltest` GROUP BY group_id
②给类别排序
SELECT group_id,GROUP_CONCAT(category ORDER BY category DESC) FROM `sqltest` GROUP BY group_id
③给类别更改分隔符
SELECT group_id,GROUP_CONCAT(category SEPARATOR '_') FROM `sqltest` GROUP BY group_id