sql server 中having中的聚合函数只能是select中有的?

2、查询学生平均分大于60分的课程编号、课程名称

select 课程编号,课程名称

from 课程表

where 课程编号=(select 课程编号,avg(成绩) from 成绩表 

group by 课程编号 having avg(成绩)>60)


这样写是不是有问题啊???





偌晴思雅
浏览 1993回答 3
3回答

Necolas1234

应该没错吧。 如果同是学生的话这应该是个书上的知识点。 书上原题是平均分大于九十那个 只要使用了聚合函数,就要用having 如果有错误请指正,谢谢

华云

有问题。select 课程编号,avg(成绩) from 成绩表 group by 课程编号 having avg(成绩)>60这条语句的查询结果是多条,=只能是一条,另外课程编号是一列而你却用两列来匹配,这两点都不符合。你可以这样写:select 课程编号,课程名称 from 课程表where 课程编号 in (select 课程编号 from 成绩表 group by 课程编号 having avg(成绩)>60)

qq_将下无人_0

在sqlserver环境下测试一下不就可以了么。。。现在都用oracle了
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server