SQL里concat_ws()、collect_set()的使用

本文介绍了一种使用SQL进行数据合并的方法,具体地,通过concat_ws和collect_set函数将同一组内的记录合并为一条记录,并以逗号作为默认分隔符。此方法适用于需要对分组数据进行整合的场景,如广告平台中的主机地址汇总等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

concat_ws(合并时的分隔符,合并字段1,字段2。。。)

collect_set(字段):根据某个字段分组后,把分在一组的数据合并在一起,默认分隔符','


eg:

select jzad,os_type,concat_ws(',',collect_set(host))
from
    (select  jzad,os_type,host,count(*),row_number() over(partition by jzad,os_type order by cast(count(*) as int) desc) rank
     from fengshang_1387ad_top10host_zqm group by jzad,os_type,host
    ) a where rank<=10
group by jzad,os_type

根据引用\[1\]和引用\[2\]的内容,可以使用concat_ws函数结合collect_set函数来进行排序。首先,将collect_set函数改为collect_list函数或sort_array函数进行排序。例如,使用sort_array(collect_set(t.class), false)来对字段进行排序。然后,使用concat_ws函数将排序后的字段进行拼接。最后,根据需要使用group by语句对结果进行分组。这样就可以实现concat_wscollect_set的排序功能。引用\[1\]\[2\] #### 引用[.reference_title] - *1* [SQLconcat()collect_set()collect_list()concat_ws()用法](https://blog.youkuaiyun.com/weixin_48272780/article/details/128243152)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [hive中的拼接函数(concat,group_concat,concat_ws,collect_set)](https://blog.youkuaiyun.com/zll_1234/article/details/106329025)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [hive concat_ws列转行排序问题](https://blog.youkuaiyun.com/qq_37067752/article/details/125238271)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值