【发布时间】:2018-04-01 15:11:57
【问题描述】:
使用 Postgres 9.5,我想连接来自 GROUP BY 的整数数组。从文档看来,array_agg 应该能够做到这一点,但我得到:ERROR: cannot accumulate arrays of different dimensionality
在我的测试集上使用 array_dims 我得到 [1:18]、[1:24] 和 [1:48]。我将其视为 3 个不同长度的一维数组。结果应该是一个维度为 [1:90] 我在这里缺少什么?
【问题讨论】:
-
IIRC array_agg 用于将分组值连接到单个数组中,而不是连接数组。
-
array_agg 将行聚合到数组 - 例如
select array_agg(oid) from pg_database -
array_agg 正在尝试执行此操作
array[array[1:18], array[1:24], array[1:48]],这不是有效的多维数组。您需要编写自己的聚合来连接数组。 -
在进一步研究之后,我看到它在做什么:
array_agg({1,2,3},{4,5,6},{7,8,9}) => {{1,4,7},{2,5,8},{3,6,9}}是否有一个聚合函数可以连接所以?_agg({1},{2,3},{4,5,6}) => {1,2,3,4,5,6}? -
我不觉得我完全明白为什么最后不是 [3:90]..
标签: sql postgresql