あなたは集計を使用する前に、配列をネスト解除する必要があります
with my_table(id, data) as (
values
(1, '["x", "y", "z"]'::jsonb),
(2, '["a", "b", "x"]')
)
select jsonb_agg(distinct value)
from my_table, jsonb_array_elements_text(data);
jsonb_agg
---------------------------
["a", "b", "x", "y", "z"]
(1 row)
グループ化できます結果:
with my_table(id, data) as (
values
(1, '["x", "y", "z"]'::jsonb),
(1, '["a", "b", "x"]'),
(2, '["1", "2", "3"]'),
(2, '["2", "3", "4"]')
)
select id, jsonb_agg(distinct value)
from my_table, jsonb_array_elements_text(data)
group by id;
id | jsonb_agg
----+---------------------------
1 | ["a", "b", "x", "y", "z"]
2 | ["1", "2", "3", "4"]
(2 rows)
おかげだろう
だろう!このアプローチをウィンドウ関数内で使用する方法があるかどうか知っていますか? (同じ 'id'を持つ行のすべての配列を結合するのと同じです。) –
ウィンドウ関数は必要ありません。更新された答えを見てください。 – klin