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,它连接数组并创建一个新数组;
先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)