KANMAS

Function

Apr 29th, 2025
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. CREATE OR REPLACE FUNCTION calculate_average_mark(
  2.     p_id_subject INTEGER
  3. )
  4. RETURNS FLOAT AS $$
  5. DECLARE
  6.     avg_mark FLOAT;
  7. BEGIN
  8.     -- Преобразуем текстовые оценки в числовые и вычисляем среднее
  9.     SELECT AVG(
  10.         CASE
  11.             WHEN Mark = 'Exc' THEN 5
  12.             WHEN Mark = 'Good' THEN 4
  13.             WHEN Mark = 'Sat' THEN 3
  14.             WHEN Mark = 'Fail' THEN 2
  15.             ELSE NULL -- Игнорируем некорректные значения
  16.         END
  17.     ) INTO avg_mark
  18.     FROM Learning
  19.     WHERE ID_Subject = p_id_subject;
  20.    
  21.     RETURN avg_mark;
  22. END;
  23. $$ LANGUAGE plpgsql;
Advertisement
Add Comment
Please, Sign In to add comment