Anpassad sammanställning
Metod 1:definiera ett anpassat aggregat. Här är en jag skrev tidigare.
CREATE TABLE my_test(title text, tags text[]);
INSERT INTO my_test(title, tags) VALUES
('ridealong', '{comedy,other}'),
('ridealong', '{comedy,tragedy}'),
('freddyjason', '{horror,silliness}');
CREATE AGGREGATE array_cat_agg(anyarray) (
SFUNC=array_cat,
STYPE=anyarray
);
select title, array_cat_agg(tags) from my_test group by title;
SIDA fråga
... eller eftersom du inte vill behålla ordningen och vill deduplicera, kan du använda en LATERAL
fråga som:
SELECT title, array_agg(DISTINCT tag ORDER BY tag)
FROM my_test, unnest(tags) tag
GROUP BY title;
i så fall behöver du inte det anpassade aggregatet. Den här är förmodligen lite långsammare för stora datamängder på grund av dedupliceringen. Ta bort ORDER BY
om det inte krävs kan det dock hjälpa.