0

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

在此处输入图像描述

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

- ID=1 的学生的 GPA 是多少?

- 按部门划分的学生的平均 GPA 是多少?

鉴于:只有五个字母等级,其值为 A=4、B=3、C=2、D=1 和 F=0,而 GPA 是课程学分 x 课程等级值除以总学分 x 4 的总和. (所以 take.grade 是一个从 0 到 4 的整数)。

我一直试图解决这个问题几个小时,但无济于事。谁能引导我朝着正确的方向前进?

谢谢你的帮助。

4

2 回答 2

0

好的,我实际上在 15 年前就必须为一个客户做这个,并且为所有学生的整个数据库做了这个,一旦你有了这些部分就不那么困难了。

没有您需要指导的确切查询。

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

CREATE TEMPORARY TABLE AllStudentsCourses
SELECT blah... from blah... join blah.. where... order by ...

一个人已注册的所有课程的列表,当你在它的时候,有列在每类基础上计算获得 AF 的成绩。您还需要课程的学分,因为这是计算 GPA 的基础。

一个 3 小时的 A 课程可以获得 3 学分的 GPA。一个 6 小时的 A 课程可以获得 6 学分的 GPA。B 的 6 小时课程对 GPA 的加权值较少,您需要汇总汇总。

现在,一旦您完成了学生尝试的所有课程,您将需要按照示例所述计算每个课程。如果您想在第一个查询中应用它,请执行此操作。

一旦你有了它,你就可以汇总尝试的总学分与获得的学分。

基础数学应该可以帮助你。

于 2013-02-18T03:58:03.530 回答
0

我不太明白 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
于 2013-02-18T03:46:32.247 回答