我正在尝试db-class.org视频的一些练习。有一个问题是找到
申请大学并选择的所有学生的最低gpa CS作为主要的'
使用聚合,这是;
select min(gpa) from student,apply where student.sid=apply.sid and major='CS';
结果将是
min
-----
3.4
(1 row)
sid,gpa是表Student,而Apply表有字段sid,major
如何在不使用聚合的情况下重写此内容?
我试过
select gpa from student,apply where major='CS' and gpa < all(select gpa from student,apply where student.sid=apply.sid and major='CS');
但是这给了我14行而不是正确的结果 gpa
-----
2.9
2.9
2.9
2.9
2.9
2.9
2.9
2.9
2.9
2.9
2.9
2.9
2.9
2.9
(14 rows)
为什么会这样?有人可以帮助我吗?
答案 0 :(得分:2)
尝试重用您的查询,我认为您错过了对学生的加入并申请了外部查询。另外我认为您应该使用<=
而不是<
。另请注意,了解您的DBMS会有所帮助。
select gpa from student, apply
where major='CS' and student.sid = apply.sid and gpa <= all (
select gpa from student, apply
where student.sid = apply.sid and major='CS'
)
答案 1 :(得分:0)
select top 1 gpa
from student, apply
where student.sid = apply.sid and major='CS'
order by gpa;
答案 2 :(得分:0)
select gpa from student,apply
where student.sid=apply.sid and major='CS'
order by gpa limit 1