Функция ниже всегда возвращает значение ELSE (которое равно 6), даже если сам запрос SELECT возвращает значение 30.00. В этом случае функция должна возвращать номер 4. Может ли кто-нибудь мне помочь?Функция MySQL не возвращает правильный результат
DELIMITER $$
CREATE FUNCTION znamka(id_testu INT, id_studenta INT)
RETURNS TINYINT
BEGIN
DECLARE percenta FLOAT;
SET percenta=
(
SELECT ROUND(tv.pocet_bodov/t.max_body*100, 2)
FROM test t JOIN test_vysledky tv ON (tv.fk_test=t.id_test)
WHERE tv.fk_test=id_testu AND tv.fk_student=id_studenta
);
RETURN CASE
WHEN percenta>=90 THEN 1
WHEN percenta<90 >=75 THEN 2
WHEN percenta<75 >=50 THEN 3
WHEN percenta<50 >=30 THEN 4
WHEN percenta<30 THEN 5
ELSE 6
END;
END;
$$
DELIMITER ;
«КОГДА Percenta <90 > = 75 THEN 2» и т.д. неверен синтаксис. Попробуйте «КОГДА процентов от 75 до 89.9999 THEN 2» и т. Д. Или «КОГДА процентов <90 и процентов> = 75 ТОГДА 2». – jarlh
введите float в int и затем проверьте. –