Mysql で次のことを行う関数を作成する必要があります。
次の方法でテーブルから 3 つの列の値を選択します。
SELECT 列 1、列 2、列 3 FROM テーブル WHERE id = 値;
最大値、中間値、最小値を知るために、これらの列の値を並べ替えます。
- 値を返します: (最大 + 最小)/3
私の質問は二重です:
1) GREATEST() と LEAST() があるので、中間値を取得する方法はありますか?
2) 次の関数が常に次のエラーを返す理由: SQL 構文にエラーがあります。'2) 付近で使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。27 行目の END $$ DELIMITER'
DELIMITER $$
CREATE FUNCTION abc_value(partita INT)
RETURNS DOUBLE DETERMINISTIC
BEGIN
DECLARE a, b, c, column1, column2, column3 DOUBLE;
DECLARE a CURSOR FOR SELECT GREATEST(column1, column2, column3) FROM table where id = value;
DECLARE c CURSOR FOR SELECT LEAST(column1, column2, column3) FROM table where id = value;
DECLARE column1 CURSOR FOR SELECT column1 FROM table where id = value;
DECLARE quotax CURSOR FOR SELECT column2 FROM table where id = value;
DECLARE quota2 CURSOR FOR SELECT column3 FROM table where id = value;
IF column1<> a THEN
IF column1<> b THEN
SET c = column1;
END IF;
END IF;
IF column2<> a THEN
IF column2<> b THEN
SET c = column2;
END IF;
END IF;
IF column3<> a THEN
IF column3<> b THEN
SET c = column3;
END IF;
END IF;
RETURN ROUND((a+b-c)/3),2);
END$$
DELIMITER;