/
telnov.ob
/
postgresql-patterns-library
Обзор
Документация
Войти
/
telnov.ob
/
postgresql-patterns-library
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
functions/array/array_cat_agg.sql
36 строк
1 KB
Rinat
Update array_cat_agg.sql
16 дек 2025, 14:15
Не верифицирован
16 дек 2025, 14:15
68fb526
Код
Авторство
О чём код?
-- PostgreSQL < 13 CREATE AGGREGATE public.array_cat_agg(anyarray) ( SFUNC = array_cat ,STYPE = anyarray ,INITCOND = '{}' ); -- PostgreSQL 13+ CREATE AGGREGATE public.array_cat_agg(anycompatiblearray) ( SFUNC = array_cat ,STYPE = anycompatiblearray ,INITCOND = '{}' ); --TEST1 SELECT id, public.array_cat_agg(words::text[]) FROM (VALUES ('1', '{"foo","bar","zap","bing"}'), ('2', '{"foo"}'), ('1', '{"bar","zap"}'), ('2', '{"bing"}'), ('1', '{"bing"}'), ('2', '{"foo","bar"}')) AS t(id, words) GROUP BY id; --TEST2 -- без функции array_cat_agg() можно обойтись, если немного переписать запрос! SELECT id, array_agg(u.w) as words FROM (VALUES ('1', '{"foo","bar","zap","bing"}'), ('2', '{"foo"}'), ('1', '{"bar","zap"}'), ('2', '{"bing"}'), ('1', '{"bing"}'), ('2', '{"foo","bar"}')) AS t(id, words), unnest(words::text[]) as u(w) GROUP BY id;