码迷,mamicode.com
首页 > 数据库 > 详细

sql数据库笔试题

时间:2016-08-10 12:27:16      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:

已知关系模式: 

 S (SNO,SNAME)  学生关系。SNO 为学号,SNAME 为姓名 

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

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

要求实现如下5个处理: 

 

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

Select SNAME FROM S
Where NOT EXISTS(
Select * FROM SC,C
Where SC.CNO=C.CNO
AND CNAME=‘李明‘
AND SC.SNO=S.SNO)

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

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

3. 列出既学过“1”号课程,又学过“2”号课程的所有学生姓名
SELECT S.SNO,S.SNAME
FROM S,(
SELECT SC.SNO
FROM SC,C
WHERE SC.CNO=C.CNO
AND C.CNAME IN(‘1‘,‘2‘)
GROUP BY SNO
HAVING COUNT(DISTINCT CNO)=2
)SC WHERE S.SNO=SC.SNO

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

Select S.SNO,S.SNAME
FROM S,(
Select SC1.SNO
FROM SC SC1,C C1,SC SC2,C C2
Where SC1.CNO=C1.CNO AND C1.NAME=‘1‘
AND SC2.CNO=C2.CNO AND C2.NAME=‘2‘
AND SC1.SCGRADE>SC2.SCGRADE
)SC Where S.SNO=SC.SNO

5.列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩
Select S.SNO,S.SNAME,SC.[1 号课成绩],SC.[2号课成绩]
FROM S,(
Select SC1.SNO,[1 号课成绩]=SC1.SCGRADE,[2 号课成绩]=SC2.SCGRADE
FROM SC SC1,C C1,SC SC2,C C2
Where SC1.CNO=C1.CNO AND C1.NAME=‘1‘
AND SC2.CNO=C2.CNO AND C2.NAME=‘2‘
AND SC1.SCGRADE>SC2.SCGRADE
)SC Where S.SNO=SC.SNO

sql数据库笔试题

标签:

原文地址:http://www.cnblogs.com/java--793325784/p/5756015.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!