The function below always returns ELSE value (which is 6) even if the SELECT query itself returns value 30.00 for example. In that case, the function should return number 4. Can anyone help me please?
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 ;