如何连接按Presto中另一列分组的数组?

时间:2018-09-25 14:59:10

标签: sql presto

在SQL中(最好是Presto)是否可行:

我想重塑这张桌子:

id, array
1, ['something']
1, ['something else']
2, ['something']

到此表:

id, array
1, ['something', 'something else']
2, ['something']

2 个答案:

答案 0 :(得分:4)

在Presto中,您可以使用array_agg。假设在输入时,您所有的array都是单元素,则如下所示:

select id, array_agg(array[0])
from ...
group by id;

但是,如果输入数组不一定是单元素,则可以将其与flatten组合,如下所示:

select id, flatten(array_agg(array))
from ...
group by id;

答案 1 :(得分:0)

如果你想要一个显示聚合数组中不同项的数组,那么这应该可行:

select id, array_distinct(flatten(array_agg(array))) as array
from ...
group by id