Concat Arrays with SQL Aggregate Functions
create aggregate array_concat_agg(anycompatiblearray) (
sfunc = array_cat,
stype = anycompatiblearray
);
Examples
create table usr (
usr_id int primary key,
country text not null,
fav_animals text[] not null
);
insert into usr (usr_id, country, fav_animals) values
(1, 'UK', '{Tiger, Wolf}'),
(2, 'AU', '{Kangaroo, Platypus}'),
(3, 'JP', '{Jaguar, Llama}'),
(4, 'UK', '{Fox, Badger}'),
(5, 'AU', '{Emu, Koala}'),
(6, 'JP', '{Tanuki, Koi}'),
(7, 'UK', '{Hedgehog, Robin}'),
(8, 'AU', '{Wombat, Shark}'),
(9, 'JP', '{Crane, Salamander}');
select
country,
array_concat_agg(fav_animals)
from usr
group by country;
select
country,
array_concat_agg(fav_animals)
filter (where 'Emu' = any(fav_animals))
from usr
group by country;