Как объединить массивы, сгруппированные по другому столбцу в Presto?

Возможно ли это в SQL (желательно Presto):

Я хочу изменить эту таблицу:

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

К этой таблице:

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

person bry888    schedule 25.09.2018    source источник


Ответы (2)


В 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;
person Piotr Findeisen    schedule 25.09.2018

Если вам нужен массив, который показывает отдельные элементы в агрегированном массиве, это должно работать:

select id, array_distinct(flatten(array_agg(array))) as array
from ...
group by id
person Andrew    schedule 07.06.2021