排列两个数组行并仅显示不同的值

问题描述 投票:0回答:1

我想聚合两个数组行。例如,在下表中,颜色列已经显示了数组格式的值。

id 颜色
1 [[红、蓝、黄]]
2 [[绿色]]
1 [[白色,蓝色]]
2 [[绿色,黑色]]

通过聚合 id 并选择不同的颜色列,我想创建如下结果。

id 颜色
1 [[红、蓝、黄、白]]
2 [[绿色,黑色]]

我如何做到这一点?

sql arrays aggregate-functions presto
1个回答
1
投票

Presto 有很多数组函数。我们可以试试:

select id, array_distinct(flatten(array_agg(colour))) as colours
from mytable
group by id

这假设每个数组都包含一个水果列表,因此类似于:

[Red,Blue,Yellow]
- 不是单元素子数组(如示例数据所示,如
[[Red,Blue,Yellow]]
)。

© www.soinside.com 2019 - 2024. All rights reserved.