想要实现这个语句,检索所授课程平均成绩均大于80分的教师姓名。
SELECT DISTINCT TNAME
FROM (SELECT TNAME,C.C#,AVG(SCORE)
FROM T,C,SC
WHERE T.T#=C.T# AND C.C#=SC.C#
GROUP BY TNAME,C.C#)AS RESULT(TNAME,C#,AVG_SCORE)AS X
WHERE 80<=ALL(SELECT AVG_SCORE
FROM RESULT AS Y
WHERE Y.TNAME=X.TNAME);
结果显示AS附近有语法错误,即GROUP BY TNAME,C.C#)AS RESULT(TNAME,C#,AVG_SCORE)AS X,后面的这个AS,求大家帮忙解决一下!!~~
如果要对同一个子查询别名引用两次以上,应该使用with as
另外,要实现你题目中的要求,其实没必要写得这么麻烦,判断课程数量是否和满足80分以上的课程数量一致就行了
select TNAME from (
SELECT TNAME,C.C#,
case when AVG(SCORE) >=80 then 1 end s
FROM T,C,SC
WHERE T.T#=C.T# AND C.C#=SC.C#
GROUP BY TNAME,C.C#) as x
group by TNAME having count(1)=count(s)