powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Создание функции в PostgreSQL
2 сообщений из 2, страница 1 из 1
Создание функции в PostgreSQL
    #39555763
vas_ilisa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. Не понимаю, как высчитать результат по формуле в SELECT.

Начну сначала. Нужно высчитать средневзвешенную оценку студента. Допустим у студента сдано 3 предмета.
Первый предмет с весом 6 сдан на оценку 3
Второй предмет с весом 1 сдан на оценку 5
Третий предмет с весом 3 сдан на оценку 2

Получается средневзвешенная оценка равна (3x6 + 5x1 + 2x3)/(6+1+3) = 2.9

Оценка находится в таблице tdeclaraion с названием поля grade, объём предмета находится в таблице tsubject c названием поля eap. Пытаюсь написать функцию, которая находит по имени и фамилии студента его средневзвешенную оценку

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE OR REPLACE FUNCTION student.proba(nimi student.tstudent.first_name%Type, perenimi student.tstudent.last_name%Type)
RETURNS int AS
$$
DECLARE
	grade int;
BEGIN
    SELECT INTO grade
    FROM student.tstudent as s
    INNER JOIN student.tdeclaration as d ON d.code_student_fk=s.code_student_pk
    INNER JOIN student.tteaching as teac ON teac.teaching_id_pk=d.teaching_id_fk
    INNER JOIN student.tsubject as sub ON teac.code_subject_fk=sub.code_subject_pk
	WHERE last_name LIKE $1 AND first_name LIKE $2;
RETURN grade;
END;
$$
LANGUAGE 'plpgsql';

SELECT first_name as "Имя", last_name as "Фамилия",  student.proba('Ivanov', 'Ivan') as "Средневзвешенная оценка "
FROM student.tstudent



Проблема в том, что не понимаю, как вписать формулу по расчёту средневзвешенной оценки в SELECT...

Но даже если написать, что бы просто счталась средняя оценка SELECT INTO grade avg(d.grade::int), то выдаётся данная ошибка
Код: plsql
1.
2.
ERROR:  invalid input syntax for integer: "(4,,,,,,,)"
CONTEXT:  PL/pgSQL function student.proba(text,text) while casting return value to function's return type



Заранее спасибо!
...
Рейтинг: 0 / 0
Создание функции в PostgreSQL
    #39555767
vas_ilisa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Забыла добавить, что к вопросу приложен файл со скриптами на создание таблицы и заполнение ее тестовыми данными
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Создание функции в PostgreSQL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]