私はそれは、商業丸められた結果を計算する必要があります間違った計算
CREATE OR REPLACE FUNCTION public.div(dividend INTEGER, divisor INTEGER)
RETURNS INTEGER
LANGUAGE 'sql'
IMMUTABLE
LEAKPROOF
STRICT
SECURITY DEFINER
PARALLEL SAFE
AS $BODY$
SELECT ($1 + $2/2)/$2;
$BODY$;
によって定義された機能を持っています。ほとんどの場合、それは仕事をします。私は理由はわかりませんが、select div(5, 3)
は私に正しい答えを与えますが、1つのパラメータが集計で計算されている場合は正しくありません。 select div(sum(val), 3) from (select 1 as val UNION SELECT 4) list
で十分です。 div
を修正するにはどうすればよいですか?私はすべての入力をキャストしたくありません。
ところでSELECT (cast($1 as integer) + cast($2 as integer)/2)/cast($2 as integer);
の定義を使用してdiv
の助けになりませんでした。
ひどいので、私はそれについて考えなかった。ありがとうございました。 – Bolpat