我正在关注斯坦福大学的Coursera数据库课程,这是我不明白的问题。
教师说,它返回的学院与申请人的GPA最高配对。
select distinct College.cName, state, GPA
from College, Apply, Student
where College.cName = Apply.cName
and Apply.sID = Student.sID
and GPA >= all
(select GPA from Student, Apply
where Student.sID = Apply.sID
and Apply.cName = College.cName);
我不理解GPA >= all
部分。这是否意味着我们正在寻找GPA的行>=
所有申请人,而不仅仅是申请某个特定的大学?换句话说,我认为这个问题正在回归那些拥有GPA最高的申请人的大学。
答案 0 :(得分:2)
College.cName = Apply.cName
这为特定的大学提供了限制。尝试删除它。
答案 1 :(得分:0)
不,因为“GPA> = ALL”语句后面的select语句与外部子句相关 - 它们共享相同的表相关名称“College”“Apply”“Student”。这意味着您将有效地查看WHERE子句当前正在引用的“College” - 即对于College_A,我们查找College_A中的所有学生,对于College_B,我们查找College_B等内的所有学生。
答案 2 :(得分:0)
让我们说:
GPA >= all
与= MAX (GPA)
相同:它只会选择拥有GPA greater or equal
的大学所有其他大学GPA。
以下查询是相同的,但更容易理解:
select distinct College.cName, state, GPA
from College, Apply, Student
where College.cName = Apply.cName
and Apply.sID = Student.sID
and GPA =
(select MAX(GPA) from Student, Apply
where Student.sID = Apply.sID
and Apply.cName = College.cName);