【发布时间】:2021-07-29 10:10:15
【问题描述】:
这是更大查询的一部分。每个查询都独立工作。当我将第一个查询中的成绩与一个常数(即 50)进行比较时,它也有效。
但是,当我将它们放在一起时,我收到了这个非常无用的错误消息。 Oracle SQL 的错误消息通常无济于事,但我通常可以通过自己的方式找到解决方案。
这一次我不知道该怎么做,因为每个查询都是独立工作的,而 avg(grade) 是一个常数,就像数字 50 是一个常数一样。
如果每个部分都有效,并且如果第一部分使用不同的常量,而第二部分返回一个常量,那么问题是什么?
select stud_id, title, grade
from uni_enrollment a
inner join uni_course b
using (course_id)
where title = 'Canadian History' and grade
> (
select avg(grade), title
from uni_enrollment a
inner join uni_course b
on a.course_id = b.course_id
where title = 'Canadian History'
group by (title)
);
好的,多亏了下面的提示,我得到了一些有用的东西。在这里,为了后代:
select stud_id, title, grade
from uni_enrollment a
inner join uni_course b
using (course_id)
where title = 'Canadian History' and grade
> (
select sum(grade)/count(*)
from uni_enrollment a
inner join uni_course b
on a.course_id = b.course_id
where title = 'Canadian History'
);
【问题讨论】: