假设我有一个名为 t 的表,它存储在 postgresql 数据库中。我有 6 列名为 a、b、c、d、e、f。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
有人能告诉我我错了吗,所以我可以继续计算所需的平均值吗?