需求来源
对列值分组,并按一定顺序排序,最后多行合并一行,合并值左到右逆序排列。
问题描述
select
t.id,
concat_ws(',', collect_set(t.class))
from
temp t
group by
t.id
原始temp数据
id | class |
---|---|
loongshaw | 1 |
loongshaw | 2 |
loongshaw | 3 |
loongshaw | 4 |
期望值
id | class |
---|---|
loongshaw | 1,2,3,4 |
实际结果,class合并后并不是有序
id | class |
---|---|
loongshaw | 1,3,2,4 |
解决方式
collect_set无序集合,改成collect_list或sort_array进行排序。
concat_ws(',', sort_array(collect_set(t.class), fal