【发布时间】:2019-02-27 01:06:25
【问题描述】:
我有这些表格(删除了一些信息,因为它与我的问题无关)
- 课程(course_id,学分)
- 学生(student_id, total_credits)
- 参加(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,因为我还不熟悉它。此外,因为这是一个家庭作业问题,我更喜欢提示而不是实际解决方案。谢谢!
【问题讨论】:
-
我希望你不介意我在这里发表评论以帮助你this post you just unhappily deleted。--我不明白你认为对此的回应是不合理的,我们指出了阻止我们的错别字从回答它开始,我解释说,您似乎希望我们在可以检查时重做您的所有工作,等等。您为什么不改正错别字,展示您的工作并解释您卡在哪里?我们愿意为您提供帮助。
-
哦,我想你是被我的 cmets re “我认为是”冒犯了。看——我真的只是想通过指出一个常见的无益和阻碍思考/写作的习惯来帮助你提高解决问题的能力。我会找到更好的沟通方式。