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

Posted

技术标签:

【中文标题】如何连接由 Presto 中的另一列分组的数组?【英文标题】:How to concatenate arrays grouped by another column in Presto? 【发布时间】:2019-03-01 06:10:35 【问题描述】:

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

我想重塑这张桌子:

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

到这张桌子:

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

【问题讨论】:

【参考方案1】:

在 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;

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于如何连接由 Presto 中的另一列分组的数组?的主要内容,如果未能解决你的问题,请参考以下文章

按多列分组并从 R 中的另一列分配值

按 Sql Server 中的一列分组并按未包含在聚合函数或 GROUP BY 子句中的另一列排序

如何创建一列数组,其值来自一列并且它们的长度来自pyspark数据帧中的另一列?

如何在 Presto 中获取连续日期,其中一列中的开始日期和另一列中的结束日期

Presto 数组包含来自另一列的值(超集 SQL 查询)

如何将一列的列值组合到 MySQL 中的另一列中?