打印本文 打印本文 关闭窗口 关闭窗口
SQL Server练习题2
作者:武汉SEO闵涛  文章来源:敏韬网  点击数2547  更新时间:2007/11/14 13:07:11  文章录入:mintao  责任编辑:mintao

题目2

问题描述:
已知关系模式:
S (SNO,SNAME)          学生关系。SNO 为学号,SNAME 为姓名
C (CNO,CNAME,CTEACHER)  课程关系。CNO 为课程号,CNAME 为课程名,CTEACHER 为任课教师
SC(SNO,CNO,SCGRADE)     选课关系。SCGRADE 为成绩

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 

[1] [2]  下一页

打印本文 打印本文 关闭窗口 关闭窗口