又一个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 '