PostgreSQL array_agg(INTEGER [])

Der*_*rek 3 sql postgresql

使用Postgres 9.5,我想从GROUP BY中继承整数数组.从文档看来似乎array_agg应该能够做到这一点,但我得到:ERROR: cannot accumulate arrays of different dimensionality

在我的测试集上使用array_dims,得到[1:18],[1:24]和[1:48].我将其视为3个不同长度的1维阵列.结果应该是一个具有维度的单个数组[1:90]我在这里缺少什么?

Łuk*_*ski 6

继续评论中的讨论,我个人的建议是创建汇总.

CREATE AGGREGATE array_concat_agg(anyarray) (
  SFUNC = array_cat,
  STYPE = anyarray
);
Run Code Online (Sandbox Code Playgroud)

然后你可以这样做:

SELECT column1
  FROM (VALUES (array[1,2,3]), (array[3,4]), (array[53,43,33,22])) arr;
    column1
---------------
 {1,2,3}
 {3,4}
 {53,43,33,22}
(3 rows)

SELECT array_concat_agg(column1)
  FROM (VALUES (array[1,2,3]), (array[3,4]), (array[53,43,33,22])) arr;
    array_concat_agg
-------------------------
 {1,2,3,3,4,53,43,33,22}
(1 row)
Run Code Online (Sandbox Code Playgroud)