中易网

排错SQL:列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩

答案:5  悬赏:30  
解决时间 2021-04-08 13:01
已知关系模式:
S (SNO,SNAME) 学生关系。SNO 为学号,SNAME 为姓名
C (CNO,CNAME,CTEACHER) 课程关系。CNO 为课程号,CNAME 为课程名,CTEACHER 为任课教师
SC(SNO,CNO,SCGRADE) 选课关系。SCGRADE 为成绩

写一SQL,功能:列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩

我写为:
select s.sname,avg(sc.scgrade)
from s,sc
where s.sno=sc.sno and
s.sno in(
select sc1.sno
from sc sc1
where sc1.scgrade<60
group by sc1.sno
having count(sc1.sno)>=2
)
结果提示出错:
-- 服务器: 消息 8118,级别 16,状态 1,行 16
-- 列 's.SNAME' 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句:

另外,下面的SQL是可以的(但我想知道为什么上面的SQL 有问题)
select s.sno,s.sname,ave(scgrade)
from s,sc,(select cno from sc wherescgrade<60 group by sno having count(distinct cno)>=2) A
where s.sno=a.sno and sc.sno=a.sno
group by s.sno,s.sname
最佳答案
因为你按照s.sname分了组并且用了聚集函数avg(sc.scgrade),就必须用group by按照s.sname分组才行啊,如果select中没有s.sname,只有聚集函数avg(sc.scgrade)的话肯定就是对的,但是不符合你题目的要求了。下面这个就是对的了,因为除了聚集函数的选择项都被分组了,在上面那个后面加上group by s.sname应该就对了,不过不知道sname是不是唯一键。
唉,也不知道自己说清楚没,不清楚的可以发信问我。
全部回答
上面用了聚合函数但没有给其分组嘛! 比较下面的就看得出来了嘛!
你只在子查询用了分组,而主查询用到了聚合函数(avg),所以也要用分组(group by),将s.SNAME分组就正确了 所以记住一点就好,查询中出现了使用聚合函数以后,后面一定要用group by,而且group by 后接查询中除了聚合函数的所有列名
上面用了聚合函数但没有给其分组嘛! 比较下面的就看得出来了嘛! 再看看别人怎么说的。
你写的对啊,只是下面的改为如下也可以: SELECt S.SNO,S.SNAME,AVG(SC.SCGRADE) FROM S,SC,( SELECt SNO FROM SC WHERe SCGRADE<60 GROUP BY SNO HAVINg COUNT(CNO)>=2 )A WHERe S.SNO=A.SNO AND SC.SNO=A.SNO GROUP BY S.SNO,S.SNAME
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
这个女孩肚子上会不会有游泳圈赘肉?如果有会
请问手机8.8GB内存多吗?
什么是锂聚合物电池,正确的使用方法是什么。
英语书i remember真的有这首歌吗
泰州大桥/S238(路口)地址在哪,我要去那里办
《草原》中描写蒙古族人民风俗习惯的句子
寒假没列计划检讨500字
山东农业大学的水产养殖专业是几本?
如果已经取消了校讯通那还能收到老师发的短信
再次领购通用机打发票要怎样办理
飘逸化妆品这个地址在什么地方,我要处理点事
我昨天晚上做梦,梦到自己把大小便倒在别人身
上海松江建设大厦附近那一条街的劳务公司坑人
TCL柜式3匹空调质量如何
黑执事里米娜怎么变坏了?
推荐资讯
口袋妖怪绿宝石吼鲸王怎么学生蛋遗传得诅咒?
内蒙古自治区冬季项目运动管理中心地址在什么
关于专升本的问题,非常急!最好是老师或者专
属牛的有个属马的上司好吗
牙齿的主要功能是______、______、______食物
金刚狼中的X_24和X_23是什么意思
沈阳的朋友现在一个月电费要多少钱?
为什么我的朋友们都是单身呢?人都长得蛮帅的
双色球红色8个蓝色3个多少组
逆战别人的都有为什么我的为什么没有显示活动
汉源县爱咪奶行蒙牛乳品专卖店这个地址在什么
怎么样控制电机只转一周?
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?