首页 > 代码库 > SQL查询升级版

SQL查询升级版

根据现有的学生表,课程表,选课关系表,查询一。没有修过李明老师的课的学生,查询
二,既学过a课程,又学过b课程的学生姓名
Sql代码
S表 [SNO,SNAME]--学生表
C表 [CNO,CNAME,CTEATHER] --课程表
SC表 [SNO,CNO,SCGRADE] --选课关系表

查询一:没有修过李明老师的课的学生的姓名
select sname from s where not exists
(select*from sc,c where sc.cno=c.cno and c.cteather=‘李明‘ and sc.sno=s.sno)

查询二: 列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩
SELECT S.SNO,S.SNAME,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


查询三:既学过a课程,又学过b课程的学生姓名
SELECT S.SNO,S.SNAME
FROM S,(
SELECT SC.SNO
FROM SC,C
WHERE SC.CNO=C.CNO
AND C.CNAME IN(‘a‘,‘b‘)
GROUP BY SNO
)SC WHERE S.SNO=SC.SNO

问题四
列出“1”号课成绩比2号同学该门课成绩高的所有学生学号
SELECT S.SNO,S.SNAME
FROM S,SC SC1,SC SC2
WHERE SC1.CNO=‘1‘
AND SC2.SNO=‘2‘
AND SC1.CNO=S.CNO
AND SC1.SCGRADE>SC2.SCGRADE

问题五
列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课程
和“2”号课程的成绩
SELECT SC1.SNO,[1号课成绩]=SC1.SCGRADE,[2号课成绩]=SC2.SCGRADE
FROM SC SC1,SC SC2
WHERE SC1.CNO=‘1‘
AND SC2.CNO=‘2‘
AND SC1.SNO=SC2.SNO
AND SC1.SCGRADE>SC2.SCGRADE