问题描述:
S (SNO,SNAME) 学生关系。SNO 为学号,SNAME 为姓名
C (CNO,CNAME,CTEACHER) 课程关系。CNO 为课程号,CNAME 为课程名,CTEACHER 为任课教师
SC(SNO,CNO,SCGRADE) 选课关系。SCGRADE 为成绩
1. 列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩
--实现代码:
Select S.SNO,S.SNAME,AVG_SCGRADE=AVG(SC.SCGRADE) FROM S,SC,( Select SNO FROM SC Where SCGRADE<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
其中 Distinct中的CNO 我怎么感觉有问题啊 好像不应该那样写吧? 我觉得应该改成 having count (sno)>=2 才对
我也觉得有问题。要不楼主建表试试
有什么问题 ? 哎 其实没问题 我想错了,大体上是对的 不过有一点 distinct CNO
不明白为什么 要distinct 它怎么会重复了呢
我怎么感觉你的这条SQL写的这么复杂化了,还用子查询了,用 join连接应该可以吧。 我也不明白你为什么要去重复!DISTINCT 除非你的表设计的有问题。