在给出这个关系图的情况下,如何执行这个MySQL查询

在给出这个关系图的情况下,如何执行这个MySQL查询,mysql,foreign-keys,relational-database,Mysql,Foreign Keys,Relational Database,我有下面的关系图,箭头表示外键。蓝色的单词是表名,下面的单词是列名 我的问题是如何从该表中提取以下数据: -ID=1的学生的平均成绩是多少 -各系学生的平均绩点是多少 鉴于此:只有 值为A=4、B=3、C=2、D=1和F=0的五个字母等级,GPA为 课程学分x课程成绩值除以总学分x 4。(因此takes.grade是0-4之间的整数,包括0-4) 我已经想了好几个小时了,但没有结果。谁能把我引向正确的方向 谢谢你的帮助。我不太明白GPA是如何计算的,我觉得你原来的帖子有问题。这里有一个可能正确

我有下面的关系图,箭头表示外键。蓝色的单词是表名,下面的单词是列名

我的问题是如何从该表中提取以下数据:

-ID=1的学生的平均成绩是多少

-各系学生的平均绩点是多少

鉴于此:只有 值为A=4、B=3、C=2、D=1和F=0的五个字母等级,GPA为 课程学分x课程成绩值除以总学分x 4。(因此takes.grade是0-4之间的整数,包括0-4)

我已经想了好几个小时了,但没有结果。谁能把我引向正确的方向


谢谢你的帮助。

我不太明白GPA是如何计算的,我觉得你原来的帖子有问题。这里有一个可能正确也可能不正确的起点:

SELECT avg(t.grade) 
FROM takes t 
   INNER JOIN course c 
   ON t.course_id = c.course_id 
WHERE t.ID = 1;

SELECT c.dept_name, avg(grade)
FROM takes t 
    INNER JOIN course c 
    ON t.course_id = c.course_id
GROUP BY c.dept_name

好的,事实上我在15年前就已经为一个客户做了这件事,并且为所有学生的整个数据库做了这件事,一旦你有了这些数据,就没有那么困难了

没有你想要的指导的确切询问

从将数据拉入临时表的单个查询开始

CREATE TEMPORARY TABLE AllStudentsCourses
SELECT blah... from blah... join blah.. where... order by ...
一个人报名参加的所有课程的列表,当你参加时,以每班为基础计算列,即获得A-F的分数。你还需要该课程的学分,因为这是计算GPA的基础

3小时的课程,成绩为a,获得3个cr小时的GPA。 6小时的课程,成绩为a,获得6小时的平均成绩。 6小时的课程成绩为B的学生,其平均成绩加权值较低 你需要把这些东西卷起来

现在,一旦你有了一个学生尝试的所有课程,你将需要计算每一个课程,如示例所述。如果您想在第一个查询中应用它,请这样做

一旦你做到了这一点,你就可以将总的尝试学分小时数与获得的学分小时数相加


基础数学应该对你有所帮助。

请在你的问题上花点力气,展示一下你一直在做什么,然后再为你做家庭作业。对我来说,这似乎是一个家庭作业问题……你是对的。这是一个家庭作业问题。我只是想寻求指导。我的第一反应是尝试参加课程,参加课程id,参加课程id,参加学生id,但我没有得到我期望的结果。哈:)是的,你不明白GPA是如何计算的。。。平均成绩不是计算平均成绩的基础。在我所在的地区,我们没有平均成绩(我们有别的东西),因此我不确定。谢谢!那么,这是GPA计算的概要吗(假设我正确地加入了表格,我将选择什么)?总(学分*等级)/(总学分*4)@user1170679,不完全是。。。很接近,但不完全是。。。看一看哪个显示了计算GPA的基础。不同的地方,等级略有不同。所以对你来说,你需要将已知的“字母”等级应用到相应的重量上……太棒了!因此,我相信我正在寻找的解决方案是:从Takes t中选择SUM(credits*grade)/SUM(credits)(学分)在t.Course\u id=c.Course\u id内部连接学生s在s.id=t.id,其中t.id=1;