日期:2014-05-18  浏览次数:20373 次

又一个SQL问题,急急急,

  问题描述:

  已知关系模式:

  S   (SNO,SNAME,SSEX,SAGE,CLASS)   学生关系。SNO-学号,CLASS-班级,SNAME-姓名,SSEX-性别,SAGE-年龄      

  C   (CNO,CNAME,CTEACHER)   课程关系。CNO   为课程号,CNAME   为课程名,CTEACHER   为任课教师

  SC(SNO,CNO,SCGRADE)   选课关系。SCGRADE   为成绩


  1.   找出没有选修过“李明”老师讲授课程的所有学生姓名


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


  3.   列出既学过“1”号课程,又学过“2”号课程的所有学生姓名



  4.   列出“1”号课成绩比“2”号同学该门课成绩高的所有学生的学号


  5.   列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩


  6.   列出至少有12名男生的班号





------解决方案--------------------
已知关系模式:

  S (SNO,SNAME,SSEX,SAGE,CLASS) 学生关系。SNO-学号,CLASS-班级,SNAME-姓名,SSEX-性别,SAGE-年龄

  C (CNO,CNAME,CTEACHER) 课程关系。CNO 为课程号,CNAME 为课程名,CTEACHER 为任课教师

  SC(SNO,CNO,SCGRADE) 选课关系。SCGRADE 为成绩


  1. 找出没有选修过“李明”老师讲授课程的所有学生姓名
select a.SNAME from s a,c b,sc c where a.sno=c.sno and b.cno=c.cno and b.CTEACHER <> '李明 '

  2. 列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩
select a.sno,b.平均成绩 from s a,(select sno,sum(SCGRADE)/count(id) as 平均成绩 from sc where SCGRADE <60 group by sno) b where a.sno=b.sno

  3. 列出既学过“1”号课程,又学过“2”号课程的所有学生姓名
select c.* from c a,sc b,s c where a.cno=b.cno and c.sno=b.sno and a.CNAME= '1 ' and a.CNAME= '2 '