首页 新闻 赞助 找找看

常见面试题sql

0
[已关闭问题] 关闭于 2013-02-07 11:19

问题描述:

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 才对

 

 

程海的主页 程海 | 初学一级 | 园豆:11
提问于:2012-10-28 14:11
< >
分享
所有回答(2)
0

我也觉得有问题。要不楼主建表试试

angelshelter | 园豆:9887 (大侠五级) | 2012-10-28 17:22

有什么问题 ? 哎 其实没问题  我想错了,大体上是对的 不过有一点   distinct CNO

不明白为什么 要distinct  它怎么会重复了呢

支持(0) 反对(0) 程海 | 园豆:11 (初学一级) | 2012-10-28 17:29
0

我怎么感觉你的这条SQL写的这么复杂化了,还用子查询了,用 join连接应该可以吧。  我也不明白你为什么要去重复!DISTINCT   除非你的表设计的有问题。

雨之秋水 | 园豆:649 (小虾三级) | 2012-10-29 14:22
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册