首页 新闻 会员 周边

sql distinct问题

0
悬赏园豆:5 [已解决问题] 解决于 2012-10-29 17:22

问题描述:

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  ?

 

 

 

程海的主页 程海 | 初学一级 | 园豆:11
提问于:2012-10-28 17:45
< >
分享
最佳答案
0

举个例子, 某位同学第一年修了课程一,挂科了,第二年是不是还要修课程一(重修),又挂了,课程ID:CNO,还是同样的呢?两次都挂了,但是是同一门课程,但你的要求是有二门以上(含两门)不及格课程。明白了吗?

收获园豆:5
三十三块 | 菜鸟二级 |园豆:373 | 2012-10-29 12:33

明白了谢谢

程海 | 园豆:11 (初学一级) | 2012-10-29 17:21
其他回答(2)
0

distinct查找多字段不好用,多字段还是group by 好

jason2013 | 园豆:1998 (小虾三级) | 2012-10-29 08:37
0
Select SNO FROM SC Where SCGRADE<60 GROUP BY SNO HAVING COUNT(DISTINCT CNO)>=2 

过滤掉不同科目的,实现二门以上(含两门)不及格课程

acepro | 园豆:1218 (小虾三级) | 2012-10-29 11:23

我意思是 怎么可能出现重复的呢 ?分组后怎么会有 重复的CNO ,什么情况下啊  想不明白为什么会有不同科目的CNO

支持(0) 反对(0) 程海 | 园豆:11 (初学一级) | 2012-10-29 11:38
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册