postgresql データベースに格納されている t という名前のテーブルがあるとします。a、b、c、d、e、f という名前の 6 つの列があります。列 a、b、および c は 0 から 100 の間の値を取りますが、算術スケールでは 0 < a < b < c < 100 です。列 d、e、および f は、1 から 10 の範囲の任意の値を取ります。
列d、e、およびfの加重平均を計算したいのですが、列a、b、およびcに関連する条件があります。条件は、50 より小さい値を持つ a、b、および c 列でのみ平均が計算されることです。
これには機能が必要だと思うので、それを始めました:
CREATE OR REPLACE FUNCTION example(t character varying, a character varying, b character varying, c character varying, d character varying, e character varying, f character varying, g character varying) RETURNS double precision AS $$
BEGIN
ALTER TABLE t ADD COLUMN g double precision;
UPDATE t
IF a > 50 THEN
SET g = d;
ELSE
IF b > 50 THEN;
SET g = (d+e)/2;
END IF c > 50 THEN
SET g = (d+e+f)/3;
END IF;
END;
$$ LANGUAGE plpgsql;
次のエラーが表示されます。
ERROR: syntax error at or near "$1"
LINE 1: ALTER TABLE $1 ADD COLUMN $2 double precision
^
QUERY: ALTER TABLE $1 ADD COLUMN $2 double precision
CONTEXT: SQL statement in PL/PgSQL function "example" near line 2
********** Error **********
ERROR: syntax error at or near "$1"
SQL state: 42601
Context: SQL statement in PL/PgSQL function "example" near line 2
必要な平均の計算を進めることができるように、誰かが私が間違っていたと教えてもらえますか?