8

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

我想重塑这张桌子:

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

到这张表:

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

2 回答 2

14

在 Presto 中,您可以使用array_agg. 假设在输入时,你所有的arrays 都是单元素,这看起来像这样:

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

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

select id, flatten(array_agg(array))
from ...
group by id;
于 2018-09-25T19:09:33.870 回答
2

如果您想要一个显示聚合数组中不同项目的数组,那么这应该可以工作:

select id, array_distinct(flatten(array_agg(array))) as array
from ...
group by id
于 2021-06-07T22:49:49.090 回答