我希望把以下示例中的花括号 "{" 和 "}" 改为 "[" 和 "]"。 我有一个表 A,其中有两列,一列是字符串类型的 text_1,另一列是 bigint 类型的计数。 我想要做的是返回一个矩阵符号,如 [[1,2,4],[2,4,5],...]
。
CREATE AGGREGATE array_agg_mult(anyarray) (
SFUNC = array_cat,
STYPE = anyarray,
INITCOND = '{}'
);
WITH B AS(
SELECT
array_agg(count) AS count
FROM
A
GROUP BY
text_1
)
SELECT
array_agg_mult(ARRAY[count])
FROM
B;
除了如何更新array_agg_mult之外,如果我尝试将
INITCOND = '{}'
更改为INITCOND = '[]'
,我会遇到以下错误:
也许可以通过在postgres中使用json生成来找到一个聪明的解决方案。ERROR: function "array_agg_mult" already exists with same argument types
array_to_json
)避免创建format_array
函数,该函数也返回用括号包围的字符串。 - StellaMarisp_array anyarray
。p_array 是 anyarray 的类型吗?我找不到任何关于它的文档资料。 - StellaMarisp_array
是参数的名称:https://www.postgresql.org/docs/current/static/plpgsql-declarations.html#PLPGSQL-DECLARATION-PARAMETERS - user330315