次の例では、「{」と「}」を「[」と「]」に変更します。私は2つのcoloumnsを持つテーブルAを持っています.1つはstring型のtext_1で、もう1つはbigint型のcountです。私がしようとしているのは、[[1,2,4],[2,4,5],...]
のような行列表記を返すことです。 array_agg_multを更新する方法のほかにpostgresの配列集約のためのブラケットの変更
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;
、私はINITCOND = '[]'
にINITCOND = '{}'
を変更しようとする場合、私は
ERROR: function "array_agg_mult" already exists with same argument types
はたぶんpostgresのでJSON世代を使用して、スマートなソリューションがあり得ます。
感謝。あなたが言ったように、角括弧は配列を表示するためのものです。 "{"と "}"の代わりに "["と "]"を使用する結果を作成する方法。他の関数を使用してformat_array関数を作成しないようにすることはできますか? 'array_to_json'は大括弧で囲まれた文字列も返します。 – StellaMaris
@StellaMaris:出力をフォーマットするには常に_some_関数が必要です。あなたが望むすべてのものをフォーマットする独自の関数を作成するのに間違っていますか? –
何も問題はありません、私はただ望む出力を持つ既存の関数を求めています。あなたの関数に戻って、私は実際に関数ヘッダの 'p_array anyarray'パラメータを理解していません。 p_arrayはanyarrayの型ですか?私はそれについてのドキュメントを見つけることができませんでした。 – StellaMaris