У меня есть эти таблицы (некоторая информация удалена, так как она не относится к моему вопросу)
- курс (идентификатор курса, кредиты)
- студент (идентификатор студента, общее количество кредитов)
- принимает (course_id, student_id, оценка)
- grade_point (оценка, баллы)
и мне нужно найти gpa для каждого студента.Это взвешенный gpa, что означает, что формула будет
sum (points * course.credits) / total_credits
В настоящее время я борюсь с тем, как указать SQL для вычисления этого значения для каждого учащегося.Запрос, который я написал, таков:
SELECT student.student_id, (sum(grade_point.points * course.credits) /
student.total_credits) AS GPA
FROM student, course, takes, grade_point
WHERE grade_point.grade = takes.grade
AND takes.course_id = course.course_id
AND student.student_id = takes.student_id;
Но, как и ожидалось, я получаю ошибку о необходимости GROUP BY
.Я знаю, что должен быть GROUP BY, если я использую агрегатную функцию, но я не уверен, что сгруппировать это по.
Я прочитал, что вам нужно было бы добавить выражение SELECT
, которое нев агрегатной функции для GROUP BY
, но если я это сделаю, я получу ORA-00979: not a GROUP BY expression
, я бы хотел избежать использования PL / SQL, поскольку я еще не знаком с этим.Кроме того, поскольку это домашняя задача, я бы предпочел подсказки, а не реальное решение.Спасибо!