Postgres GROUP BY整数数组

Ale*_*ros 6 arrays postgresql aggregate-functions

我在Postgres 9.3中的数据库表

| f1|f2 | f3
| 1 | 2 | {1,2,3}
| 1 | 3 | {4,5}
Run Code Online (Sandbox Code Playgroud)

f1,f2是整数f3是整数[].

我怎么能得到这个:

SELECT f1, myfn(f3)
FROM dbTable
GROUP BY f1;
Run Code Online (Sandbox Code Playgroud)

这样我得到:

| 1 | {1,2,3,4,5}
Run Code Online (Sandbox Code Playgroud)

Postgres中是否有类似的函数,如array_agg,它连接数组并创建一个新数组;

Clo*_*eto 5

SQL小提琴

unnest聚合再聚合

select f1, array_agg(f3) as f3
from (
    select f1, unnest(f3) as f3
    from dbtable
) s
group by f1
Run Code Online (Sandbox Code Playgroud)

为了避免重复和排序输出(必须安装 intarry 扩展):

select f1, sort(uniq(array_agg(f3))) as f3
from (
    select f1, unnest(f3) as f3
    from dbtable
) s
group by f1
Run Code Online (Sandbox Code Playgroud)