Возможно ли это в SQL (желательно Presto):
Я хочу изменить эту таблицу:
id, array
1, ['something']
1, ['something else']
2, ['something']
К этой таблице:
id, array
1, ['something', 'something else']
2, ['something']
Возможно ли это в SQL (желательно Presto):
Я хочу изменить эту таблицу:
id, array
1, ['something']
1, ['something else']
2, ['something']
К этой таблице:
id, array
1, ['something', 'something else']
2, ['something']
В 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;
Если вам нужен массив, который показывает отдельные элементы в агрегированном массиве, это должно работать:
select id, array_distinct(flatten(array_agg(array))) as array
from ...
group by id