Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE FUNCTION calculate_average_mark(
- p_id_subject INTEGER
- )
- RETURNS FLOAT AS $$
- DECLARE
- avg_mark FLOAT;
- BEGIN
- -- Преобразуем текстовые оценки в числовые и вычисляем среднее
- SELECT AVG(
- CASE
- WHEN Mark = 'Exc' THEN 5
- WHEN Mark = 'Good' THEN 4
- WHEN Mark = 'Sat' THEN 3
- WHEN Mark = 'Fail' THEN 2
- ELSE NULL -- Игнорируем некорректные значения
- END
- ) INTO avg_mark
- FROM Learning
- WHERE ID_Subject = p_id_subject;
- RETURN avg_mark;
- END;
- $$ LANGUAGE plpgsql;
Advertisement
Add Comment
Please, Sign In to add comment