1

クエリで postgresql sum 関数の代わりとして機能する関数を作成しようとしています。

LOOONG とこのようなものを自分自身にクエリします

SELECT .... sum(tax) as tax ... from (SUBQUERY) as bar group by id;

この合計関数を、税計算によって最終値を変更する独自の関数に置き換えたいと考えています。

だから私はこのようなpgsql関数を作成しました:

DECLARE
  v double precision;
BEGIN
  IF val > 256 THEN
    v := 256;
  ELSE
    v := val;
  END IF;
  RETURN (v*0.21)/0.79;
END;

その関数は入力として倍精度を使用します。ただし、この関数を使用するとエラーが発生します。

column "bar.tax" must appear in the GROUP BY clause or be used in an aggregate function

そこで、関数の入力型として double precision[] を使用しようとしました。その場合、エラーは、名前と指定された入力型に一致する postgresql 関数がないことを示していました。

pgsql関数を使用するかどうかにかかわらず、クエリのsum関数を置き換える方法はありますか-本当に、本当に、本当に必要でない限り、クエリの他の部分を変更したくありません。

4

1 に答える 1

3

集計関数については、CREATE AGGREGATEを調べてください。そして、あなたの表現ではsum(LEAST(tax,256)*21/79)、私があなたを正しく読んだら、次のようなことができます。

于 2012-09-12T12:40:11.603 に答える