0

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;
4

1 に答える 1