Sql 关于HAVING子句don'的子查询;不行?
我有两个表,一个是指学生的成绩,另一个是指学生的信息,这两个表通过属性Sql 关于HAVING子句don'的子查询;不行?,sql,database,oracle,Sql,Database,Oracle,我有两个表,一个是指学生的成绩,另一个是指学生的信息,这两个表通过属性students.ST_ID和GRADES.G_students连接起来。查询要求我检索其平均分数高于具有特定students.ST_ID_NUM的学生的平均分数的所有学生(矩阵的另一个属性)。我可以检索所有学生的平均分数,如下所示: SELECT STUDENTS.ST_NAME, STUDENTS.ST_SURNAME, AVG(GRADES.G_GRADE) FROM STUDENTS INNER JOIN GRAD
students.ST_ID
和GRADES.G_students
连接起来。查询要求我检索其平均分数高于具有特定students.ST_ID_NUM
的学生的平均分数的所有学生(矩阵的另一个属性)。我可以检索所有学生的平均分数,如下所示:
SELECT STUDENTS.ST_NAME, STUDENTS.ST_SURNAME, AVG(GRADES.G_GRADE)
FROM STUDENTS INNER JOIN GRADES
ON STUDENTS.ST_ID = GRADES.G_STUDENT
GROUP BY STUDENTS.ST_NAME, STUDENTS.ST_SURNAME;`
和特定学生的平均分数。ST_ID_NUM`:
select avg(grades.g_grade)
from students inner join grades
on students.st_id = grades.g_student
where students.st_id_num = '061RDB121';
如何在第一个查询中设置条件?如果我在
HAVING
子句中放入另一个子查询,则该子查询不起作用!我认为内部查询可以工作,但我不知道如何编写它。您几乎只是将这两个查询组合在一起
SELECT STUDENTS.ST_NAME, STUDENTS.ST_SURNAME, AVG(GRADES.G_GRADE)
FROM STUDENTS INNER JOIN GRADES
ON STUDENTS.ST_ID = GRADES.G_STUDENT
GROUP BY STUDENTS.ST_NAME, STUDENTS.ST_SURNAME
HAVING AVG(GRADES.G_GRADE)>
(
select avg(grades.g_grade)
from students inner join grades
on students.st_id = grades.g_student
where students.st_id_num = '061RDB121'
)
) 这样应该行得通
SELECT STUDENTS.ST_NAME, STUDENTS.ST_SURNAME, AVG(GRADES.G_GRADE)
FROM STUDENTS INNER JOIN GRADES
ON STUDENTS.ST_ID = GRADES.G_STUDENT
GROUP BY STUDENTS.ST_NAME, STUDENTS.ST_SURNAME;
having AVG(GRADES.G_GRADE) > (select avg(grades.g_grade)
from students inner join grades
on students.st_id = grades.g_student
where students.st_id_num = '061RDB121');
您是否尝试将两个查询结合使用
SELECT STUDENTS.ST_NAME, STUDENTS.ST_SURNAME, AVG(GRADES.G_GRADE)
FROM STUDENTS INNER JOIN GRADES
ON STUDENTS.ST_ID = GRADES.G_STUDENT
GROUP BY STUDENTS.ST_NAME, STUDENTS.ST_SURNAME
HAVING AVG(GRADES.G_GRADE) > (
select avg(grades.g_grade)
from students inner join grades
on students.st_id = grades.g_student
where students.st_id_num = '061RDB121';
);
向我们展示不起作用的
查询,并告诉我们错误消息是什么。我想这就是OP试图说的不起作用的原因。。。请注意,医生说它无论如何都应该是=)好的,现在可以了,真的,我在问这个问题之前已经试过这个解决方案了。生命的迷雾:/