复杂查询复习

互评批阅


    实验03 数据库表的复杂查询


    互评指标:

(1)按照答案中给的参考答案进行评分,注意答案仅做参考; (2)若有扣分,
必须在评语中给出扣分原因; (3)不允许随意乱扣分,也不允许错了还给满分。


    一. 简答题(共19题)


      1. (简答题) 本实验的实验目的是:

/***的答案:/

    *掌握涉及一个以上数据表的查询方法。


    多表之间的连接包括等值连接、自然连接、非等值连接、自身连接、外连接和
    复合条件连接


    掌握嵌套查询,使我们可以用多个简单查询构成复杂的查询,从而增强SQL的
    查询能力。

/正确答案:/

    (1)掌握涉及一个以上数据表的查询方法。

             多表之间的连接包括等值连接、自然连接、非等值连接、自身连
    接、外连接和复合条件连接

    (2)掌握嵌套查询使我们可以用多个简单查询构成复杂的查询,从而增强SQL
    的查询能力。


评分 分
评语
段落格式
字体
字号
点击上传
x
        


      2. (简答题)

      请写出下列查询操作的SQL语句:"查询20161151班的学生在大学一年级选修
      的课程情况,查询结果要显示学号(Sno)、姓名(Sname)、专业名(Mname)、
      学年(Racademicyear)、学期(Rterm)、选课的课程号(Cno)、选课的课程名
      称(Cname)及成绩(Grade),并按照学号、学年、学期升序排序"

      将查询结果截图,截图的右下角要求标上你的学号最后两位

/***的答案:/

    select
    s.sno,s.Sname,m.Mname,r.Racademicyear,r.Rterm,c.Cno,c.Cname,r.Grade

    from student26 s,reports26 r,courses26 c,major26 m

    where s.Sno=r.Sno and r.Cno=c.Cno and s.mno=m.Mno and
    s.Sclass='20161151'

          and r.Racademicyear='2016'

    order by s.sno,r.Racademicyear,r.Rterm;


/正确答案:/

    (1)MySQL语句(3分)

    SELECT S.Sno, Sname, Mname, Racademicyear, Rterm, C.Cno, Cname, Grade

    FROM Students S, Major M, Courses C, Reports R

    WHERE S.Sno=R.Sno AND S.Mno=M.Mno AND C.Cno=R.Cno

    AND Sclass='20161151' AND Racademicyear=2016

    ORDER BY S.Sno,Racademicyear, Rterm;

    或者

    SELECT S.Sno, Sname, Mname, Racademicyear, Rterm, C.Cno, Cname, Grade

    FROM Students S INNER JOIN Major M ON S.Mno=M.Mno

               INNER JOIN Reports R ON S.Sno=R.Sno

               INNER JOIN Courses C ON C.Cno=R.Cno

    WHERE Sclass='20161151' AND Racademicyear=2016

    ORDER BY S.Sno,Racademicyear, Rterm;

    (2)查询结果(1分)

评分 分
评语
段落格式
字体
字号
点击上传
x
        


      3. (简答题)

      请写出下列查询操作的SQL语句:"查询教师张雪的授课信息,查询结果显示
      教师编号(Tno)、姓名(Tname)、授课学年(Tacademicyear)、授课学期
      (Tterm)、授课的课程编号(Cno)、课程名(Cname)以及授课班级(Sclass),
      结果按授课学年、授课学期升序排序"

      将查询结果截图,截图的右下角要求标上你的学号最后两位

/***的答案:/

    select t.tno,t.tname,tu.Tacademicyear,tu.Tterm,c.cno,c.cname,tu.sclass

    from teachers26 t,tutors26 tu, courses26 c

    where t.tno=tu.tno and tu.Cno=c.Cno

         and t.Tname='张雪'

    order by tu.Tacademicyear,tu.Tt

    erm;

/正确答案:/

    (1)MySQL语句(3分)

    SELECT T.Tno, Tname,Tacademicyear,Tterm,C.Cno,Cname,Sclass

    FROM Teachers T, Tutors Tut, Courses C

    WHERE T.Tno=Tut.Tno AND Tut.Cno=C.Cno

    AND Tname='张雪'

    ORDER BY Tacademicyear,Tterm;

    (2)查询结果(1分)


评分 分
评语
段落格式
字体
字号
点击上传
x
        


      4. (简答题)

      请写出下列查询操作的SQL语句:"查询计算机与信息工程学院的各个专业的
      学生数,查询结果显示专业号(Mno)、专业名称(Mname)、学生人数,按专
      业号升序排序,并用中文名显示属性列"

      将查询结果截图,截图的右下角要求标上你的学号最后两位

/***的答案:/

    select m.mno '专业号',m.mname '专业名称',count(*)'学生数'

    from student26 s,department26 d,major26 m

    where s.dno=d.dno and s.mno=m.mno and d.Dname='计算机与信息工程学院'

    group by m.Mname,m.mno

    order by m.

    Mno;

/正确答案:/

    (1)MySQL语句(3分)

    SELECT M.Mno 专业号, Mname 专业名称, COUNT(*) 学生人数

    FROM Students S, Department D, Major M

    WHERE S.Dno=D.Dno AND S.Mno=M.Mno

    AND Dname='计算机与信息工程学院'

    GROUP BY M.Mno, Mname

    ORDER BY M.Mno;

    (2)查询结果


评分 分
评语
段落格式
字体
字号
点击上传
x
        


      5. (简答题)

      请写出下列查询操作的SQL语句:"用自身连接查询和'王一凡'在同一个学
      院,且总工资(基本工资Tsal+岗位津贴Tcomm)比'王一凡'高的教师的信
      息,结果显示教师编号(Tno)、姓名(Tname)和总工资,并用中文显示属性列名"

      将查询结果截图,截图的右下角要求标上你的学号最后两位

/***的答案:/

    select t2.tno'教师编号',t2.tname'姓名',t2.Tsal+t2.Tcomm'总工资'

    from teachers26 t1 left join teachers26 t2 on t1.tno=t2.tno

    where t1.dno in

          (select dno from teachers26 where tname='王一凡')

    and (t1.Tsal+t1.Tcomm)>(select Tsal+Tcomm from teachers26 where
    tname='王一

    凡');

/正确答案:/

    (1)MySQL语句(3分)(若未使用自身连接,但语句正确,则扣1分)

    SELECT T1.Tno AS "教师编号", T1.Tname AS "教师姓名",
    T1.Tsal+t1.Tcomm AS "总工资"

    FROM Teachers T1, Teachers T2

    WHERE T1.Dno=T2.Dno AND T2.Tname='王一凡'

    AND (T1.Tsal+T1.Tcomm)>(T2.Tsal+T2.Tcomm);

    (2)查询结果(1分)


评分 分
评语
段落格式
字体
字号
点击上传
x
        


      6. (简答题)

      请写出下列查询操作的SQL语句:"用自身连接查询前序课程是数据结构的课
      程的信息,查询结果显示课程编号(Cno)、课程名称(Cname)和学分
      (Ccredit)"

      将查询结果截图,截图的右下角要求标上你的学号最后两位

/***的答案:/

    select c1.cno,c1.cname,c1.Credit

    from courses26 c1 inner  join courses26 c2

    on c1.Pre_Cno=c2.Cno

    where c2.Cno in (select c2.Cno from courses26 where c2.Cname='数据结构'

    );

/正确答案:/

    (1)MySQL 语句(3分)(若未使用自身连接,但语句正确,则扣1分)

    SELECT C1.Cno, C1.Cname, C1.Ccredit

    FROM Courses C1, Courses C2

    WHERE C1.Pre_Cno=C2.Cno AND C2.Cname='数据结构';

    (2)查询结果(1分)


评分 分
评语
段落格式
字体
字号
点击上传
x
        


      7. (简答题)

      请写出下列查询操作的SQL语句:"用自身连接查询既给20161121班上过课,
      也给20161151班上过课的教师信息,查询结果显示教师编号(Tno)、教师姓
      名(Tname)"

      将查询结果截图,截图的右下角要求标上你的学号最后两位

/***的答案:/

    select distinct t1.Tno,t26.Tname

    from tutors26 t1 inner join teachers26 t26 on t1.Tno = t26.Tno

         inner join tutors26 t2 on t1.Tno=t2.tno

    where t1.Sclass='20161151' and t2.Sclass='20161121';


/正确答案:/

    (1)MySQL语句(4分)(若未使用自身连接,但语句正确,则扣1分)

    SELECT DISTINCT Tut1.Tno, Tname

    FROM Tutors Tut1, Tutors Tut2, Teachers T

    WHERE Tut1.Tno=Tut2.Tno AND Tut1.Tno=T.Tno

    AND Tut1.Sclass='20161121' AND Tut2.Sclass='20161151';

    (2)查询结果(1分)


评分 分
评语
段落格式
字体
字号
点击上传
x
        


      8. (简答题)

      请写出下列查询操作的SQL语句:"查询课程表中的所有课程在每个学期的选
      课情况,查询结果以中文名显示课程编号(Cno)、课程名称(Cname)、选课学
      年(Racademicyear)、选课学期(Rterm)及该学年该学期的选课人数
      (SelNumber),按课程编号、选课学年、选课学期升序排序"

      将查询结果中的前15条记录截图,截图的右下角要求标上你的学号最后两位

/***的答案:/

    select c.cno'课程编号',c.cname'课程名称',r.Racademicyear'选课学年
    ',r.Rterm'选课学期',count(*)'选课人数'

    from courses26 c join reports26 r on c.Cno = r.Cno

    group by r.Racademicyear, c.cname, c.cno, r.Rterm

    order by c.cno,r.Racademicyear,r.Rterm;


/正确答案:/

    (1)MySQL语句(4分)

    SELECT C.Cno AS "课程编号", Cname AS "课程名称", Racademicyear AS "
    选课学年", Rterm AS "选课学期", COUNT(*) AS "选课人数"

    FROM Courses C

    LEFT JOIN Reports R ON C.Cno=R.Cno

    GROUP BY C.Cno, Cname, Racademicyear, Rterm

    ORDER BY C.Cno, Racademicyear,Rterm;

    (2)查询结果(1分)


评分 分
评语
段落格式
字体
字号
点击上传
x
        


      9. (简答题)

      请写出下列查询操作的SQL语句:"查询教师表中的每一位数学与统计学院的
      教师的授课课情况,查询结果显示教师编号(Tno)、教师姓名(Tname)、授课
      学年(Tacademicyear)、授课学期(Tterm)、课程编号(Cno)及课程名称
      (Cname),按教师编号、开课学年、授课学期升序排序"

      将查询结果截图,截图的右下角要求标上你的学号最后两位

/***的答案:/

    select distinct t.tno,t.tname,tu.Tacademicyear,tu.Tterm

    from teachers26 t join tutors26 tu on t.tno=tu.tno

         join  department26 d on t.Dno=d.dno

         join courses26 c on c.cno=tu.cno

    where d.Dno in (select dno from department26 where Dname='数学与统计
    学院')

    order by t.tno,tu.Tacademicyear,tu.Tterm;


/正确答案:/

    (1)MySQL语句(4分)

    SELECT T.Tno, Tname,Tacademicyear, Tterm, Tut.Cno, Cname

    FROM Department D

    INNER JOIN Teachers T ON T.Dno=D.Dno

    LEFT JOIN Tutors Tut ON T.Tno=Tut.Tno

    LEFT JOIN Courses C ON Tut.Cno=C.Cno

    WHERE Dname='数学与统计学院';

    (2)查询结果(1分)


评分 分
评语
段落格式
字体
字号
点击上传
x
        


      10. (简答题)

      请写出下列查询操作的SQL语句:"使用谓词IN嵌套查询,查询有课程成绩不
      及格的学生的信息,结果显示学号(Sno)、姓名(Sname)及所在班级(Sclass)"

      将查询结果截图,截图的右下角要求标上你的学号最后两位

/***的答案:/

    select  distinct s.sno,s.sname,s.Sclass

    from student26 s join reports26 r on s.Sno = r.Sno

    where r.Sno in (select r.Sno from reports26 where r.Grade<60);


/正确答案:/

    (1)MySQL语句(3分)(若未使用谓词IN的嵌套查询,但结果正确,则扣1分)

    SELECT Sno,Sname,Sclass

    FROM Students

    WHERE Sno IN

    ( SELECT Sno FROM Reports

      WHERE Grade<60);

    (2)查询结果(1分)


评分 分
评语
段落格式
字体
字号
点击上传
x
        


      11. (简答题)

      请写出下列查询操作的SQL语句:"使用谓词IN嵌套查询,查询在2014学年有
      授课的教师的信息,结果显示教师编号(Tno)、教师姓名(Tname)及职称(Tprof)"

      将查询结果截图,截图的右下角要求标上你的学号最后两位

/***的答案:/

    select distinct t.tno,t.tname,t.Tprof

    from teachers26 t join tutors26 tu on t.Tno = tu.Tno

    where t.tno in(select tno from teachers26 where Tacademicyear='2014'

    );

/正确答案:/

    (1)MySQL语句(3分)(若未使用谓词IN嵌套查询,但结果正确,则扣1分)

    SELECT Tno, Tname, Tprof

    FROM Teachers

    WHERE Tno IN

    ( SELECT Tno

      FROM Tutors

      WHERE Tacademicyear=2014);

    (2)查询结果(1分)


评分 分
评语
段落格式
字体
字号
点击上传
x
        


      12. (简答题)

      请写出下列查询操作的SQL语句:"使用嵌套查询,查询计算机与信息工程学
      院中总工资高于本学院的平均总工资的教师信息,结果以中文名称显示教师
      编号(Tno)、教师姓名(Tname)、职称(Tprof)及总工资"

      将查询结果截图,截图的右下角要求标上你的学号最后两位

/***的答案:/

    select t.tno'编号',t.Tname'姓名',t.Tprof'职称',t.Tsal+t.Tcomm'总工资'

    from teachers26 t join department26 d on t.Dno = d.Dno

    where t.dno in(select dno from department26 where dname='计算机与信
    息工程学院')

          and (t.Tsal+t.Tcomm) >

              (select avg(t26.Tsal+t26.Tcomm) from teachers26 t26 join
    department26 d26 on t.Dno = d26.Dno

              where d26.Dname='计算机与信息工程学院'

                  group by d26.dno);


/正确答案:/

    (1)MySQL语句(4分)

    SELECT Tno AS "教师编号", Tname AS "教师姓名", Tprof AS "职称",
    Tsal+Tcomm AS "总工资"

    FROM Teachers T, Department D

    WHERE T.Dno=D.Dno AND Dname='计算机与信息工程学院'

    AND (Tsal+Tcomm)>

    ( SELECT AVG(Tsal+Tcomm)

      FROM Teachers

      WHERE Dno=

    ( SELECT Dno

      FROM Department

      WHERE Dname='计算机与信息工程学院'

    )

    );

    (2)查询结果(1分)


评分 分
评语
段落格式
字体
字号
点击上传
x
        


      13. (简答题)

      请写出下列查询操作的SQL语句:"使用嵌套查询,查询总工资高于所有学院
      的平均总工资的教师信息,结果显示教师编号(Tno)、教师姓名(Tname)、学
      院名称(Dname)、职称(Tprof)及总工资,并用中文显示属性列名"

      将查询结果截图,截图的右下角要求标上你的学号最后两位

/***的答案:/

    select t.tno,t.tname,d.Dname,t.Tprof,t.Tsal+t.Tcomm

    from department26 d join teachers26 t on d.Dno = t.Dno

     where (t.Tsal+t.Tcomm)>

           (select avg(Tsal+Tcomm) from teachers26 )

     group by t.tno, t.tname, d.Dname, t.Tprof, t.Tsal+t.Tcomm;


/正确答案:/

    (1)MySQL语句(4分)

    SELECT Tno AS "教师编号", Tname AS "教师姓名", Dname AS "学院名称",
    Tprof AS "职称", Tsal+Tcomm AS "总工资"

    FROM Teachers T, Department D

    WHERE T.Dno=D.Dno

    AND (Tsal+Tcomm)> ALL

    ( SELECT AVG(Tsal+Tcomm)

      FROM Teachers

      GROUP BY Dno

    );

    (2)查询结果(1分)


评分 分
评语
段落格式
字体
字号
点击上传
x
        


      14. (简答题)

      请写出下列查询操作的SQL语句:"使用嵌套查询,查询已获学分高于2014级
      所有计算机与信息工程学院的学生获得的学分的学生学号(Sno)、姓名
      (Sname)及已获得的总学分,并用中文显示属性列名"

      将查询结果截图,截图的右下角要求标上你的学号最后两位

      (提示:① 已获学分是指已有成绩且成绩大于等于60分的课程的学分;② 先
      统计出计算机与信息工程学院的每位学生获得的学分;③ 统计的每位学生获
      得的学分,再筛选出满足条件的学生)

/***的答案:/

    select s.sno'学号',s.sname '姓名',sum(r.grade) '学分'

    from student26 s join reports26 r on s.Sno = r.Sno

                     join department26 d on s.Dno = d.Dno

    where r.Grade in(select Grade from reports26 where grade >=60) >

          all(select Grade from reports26 where sno in

                                             (select sno from student26
    where dno in

                                            (select dno from
    department26 where d.Dname='计算机与信息工程学院')

                                                 and left(sno,4)='2014'))

    group by s.sno,s.sname;


/正确答案:/

    (1)MySQL语句(6分)

    SELECT S.Sno,Sname,SUM(Ccredit) TotalCredit

    FROM Students S, Reports R, Courses C

    WHERE S.Sno=R.Sno AND R.Cno=C.Cno AND R.Grade>=60

    GROUP BY S.Sno,Sname

    HAVING SUM(Ccredit) >ALL

    (SELECT SUM(Ccredit)

    FROM Students Stu, Reports Rep, Courses Cou

    WHERE Stu.Sno=Rep.Sno AND Cou.Cno=Rep.Cno

    AND LEFT(Stu.Sno,4)='2014' AND Rep.Grade>=60

    AND Dno=

    (SELECT Dno FROM Department WHERE Dname='计算机与信息工程学院')

    GROUP BY Rep.Sno

    );

    (2)查询结果(1分)


评分 分
评语
段落格式
字体
字号
点击上传
x
        


      15. (简答题)

      请写出下列查询操作的SQL语句:"使用EXISTS谓词查询计算机与信息工程学
      院中没有讲授过课程号为112p0054课程的教师编号(Tno)、姓名(Tname)和职
      称(Tprof)"

      将查询结果截图,截图的右下角要求标上你的学号最后两位

/***的答案:/

    select Tno,Tname,Tprof

    from Teachers31 T

    where not exists(select * from Tutors31

                         where Tno=T.Tno and Cno like '112p0054')

    and exists(select * from Teachers31 where T.Dno='11');


/正确答案:/

    (1)MySQL语句(4分)

    SELECT Tno, Tname, Tprof

    FROM Teachers T

    WHERE Dno=

    ( SELECT Dno FROM Department

      WHERE Dname='计算机与信息工程学院')

    AND NOT EXISTS

    (SELECT * FROM Tutors Tut

    WHERE Tut.Tno=T.Tno AND Tut.Cno='112p0054');

    (2)查询结果(1分)


评分 分
评语
段落格式
字体
字号
点击上传
x
        


      16. (简答题)

      请写出下列查询操作的SQL语句:"使用EXISTS谓语查询至少选修了学生
      2014112104选修的全部课程的学生的学号(Sno)、姓名(Sname)"

      将查询结果截图,截图的右下角要求标上你的学号最后两位

/***的答案:/

    select distinct s.sno,s.sname

    from student26 s join reports26 r on s.Sno = r.Sno

    where  not exists(select r.Sno

                 from reports26 where not exists(select cno

                                                  from reports26

                     where r.Sno='2014112104'));


/正确答案:/

    (1)MySQL语句(5分)

    SELECT S.Sno, Sname

    FROM Students S

    WHERE S.Sno<>'2014112104'

    AND NOT EXISTS

    (SELECT * FROM Reports Rep

    WHERE Sno='2014112104'

    AND NOT EXISTS

    (SELECT * FROM Reports

    WHERE S.Sno=Sno AND Rep.Cno=Cno)

    );

    (2)查询结果(1分)


评分 分
评语
段落格式
字体
字号
点击上传
x
        


      17. (简答题)

      请写出下列查询操作的SQL语句:"使用嵌套子关系查询,查询课程表中每一
      门课程的选课情况,查询结果要显示课程编号(Cno)、课程名称(Cname)、选
      课人数、平均分、最高分、最低分。若某门课程还没有被选,则要选课人数
      显示为‘尚无人选’,平均分等显示为NULL;若某门课程有人选,但平均分等
      结果为NULL,则显示为’尚无成绩’;非空的数据结果保留两位小数。结果按
      课程编号升序排序,并用中文显示属性列名"

      将查询结果截图,截图的右下角要求标上你的学号最后两位

      提示:① 本查询会使用到COALESCE()函数、FORMAT()函数;② 本查询需要使
      用CASE WHEN语句;③先统计出每门课程的选修情况,再与课程表建立左连接

/***的答案:/

    select C.Cname'课程名称',C.cno'课程编号',count(*)'选课人数',

    case when count(*) is null then '尚无人选'

    else count(*) end,

    case when avg(R.Grade) is null then '尚无成绩'

    else format(avg(R.Grade),2) end,

    case when max(R.Grade) is null then '尚无成绩'

    else format(max(R.Grade),2) end,

    case when min(R.Grade) is null then '尚无成绩'

    else format(min(R.Grade),2) end

    from Courses06 C left join Reports06 R on C.Cno = R.Cno

    group by C.Cname, C.Cno;


/正确答案:/

    (1)MySQL语句(8分)

    SELECT C.Cno '课程号', Cname '课程名',

    (CASE WHEN SelNum IS NULL THEN '尚未选'

    ELSE CAST(SelNum AS CHAR)

    END) '选课人数',

    (COALESCE(CAST(FORMAT(AvgGrd,2) AS CHAR),'尚无成绩')) '平均分',

    (COALESCE(CAST(FORMAT(MaxGrd,2) AS CHAR),'尚无成绩')) '最高分',

    (COALESCE(CAST(FORMAT(MinGrd,2) AS CHAR),'尚无成绩')) '最低分'

    FROM Courses C LEFT JOIN

    (SELECT Cno, COUNT(*) 'SelNum', AVG(Grade) 'AvgGrd',

    MAX(Grade) 'MaxGrd', MIN(Grade) 'MinGrd'

    FROM Reports

    GROUP BY Cno) R

    ON C.Cno=R.Cno

    ORDER BY C.Cno;

    (2)查询结果(1分)


评分 分
评语
段落格式
字体
字号
点击上传
x
        


      18. (简答题)

      请写出下列查询操作的SQL语句:"使用嵌套子关系查询,查询在2015学年的
      第1学期,选修了刘伟老师上的计算机科学概论课程的学生的基本信息,查
      询结果显示所在班级(Sclass)、学号(Sno)、姓名(Sname)、选修的课程编
      号(Cno)、课程名(Cname)以及授课的教师(Tname)"

      将查询结果截图,截图的右下角要求标上你的学号最后两位

/***的答案:/

    select distinct Sclass,S.Sno,Sname,C.Cno,C.Cname,Tname

    from Student31 S

    inner join (select Sno,Cno from Reports31 where
    Racademicyear='2015'and Rterm='1')R on S.Sno = R.Sno

    inner join (select Cno,Cname from Courses31 where Cname='计算机科学
    概论')C on R.Cno =C.Cno

    inner join (select Tno,Cno from Tutors31 )Tu on Tu.Cno=C.Cno

    inner join (select Tname,Tno from Teachers31 where Tname='刘伟')T on
    T.Tno=Tu.Tno;


/正确答案:/

    (1)MySQL语句(8分)

    SELECT Tut.Sclass, Sno, Sname, T.Tno, Tname

    FROM Tutors Tut, Teachers T, Courses C,

    ( SELECT S.Sno, Sname, Sclass

      FROM Reports R, Courses C, Students S

      WHERE R.Cno=C.Cno AND R.Sno=S.Sno

    AND Racademicyear=2015 AND Rterm=1

    AND Cname='计算机科学概论'

    ) R

    WHERE Tut.Tno=T.Tno AND Tut.Cno=C.Cno AND R.Sclass=Tut.Sclass

    AND Tacademicyear=2015 AND Tterm=1

    AND Cname='计算机科学概论' AND Tname='刘伟';

    (2)查询结果(1分)


评分 分
评语
段落格式
字体
字号
点击上传
x
        


      19. (简答题)

      请写出下列查询操作的SQL语句:"使用嵌套子关系查询,查询选修了数据结
      构,且其成绩不低于本年级所有选修了该门课程的学生的平均成绩的学生信
      息,查询结果以中文名称显示学生所在年级、学号(Sno)、姓名(Sname)及其
      选修的该门课程的成绩(Grade)"

      将查询结果截图,截图的右下角要求标上你的学号最后两位

/***的答案:/

    select left(Sclass,4),s.sno,s.sname,r.grade

    from student26 s join reports26 r on s.Sno = r.Sno

                    join courses26 c on r.Cno = c.Cno

    where r.cno in(select  cno from courses26 where cname='数据结构')

          and r.Grade > (select avg(grade) from reports26

                       where cno in (select cno from courses26

                                    where cname='数据结构'));


/正确答案:/

    (1)MySQL语句(8分)

    SELECT LEFT(S.Sno,4) '年级', S.Sno '学号', Sname '姓名', Grade '成绩'

    FROM Students S, Reports R

    WHERE S.Sno=R.Sno

    AND Cno=

    (SELECT Cno

    FROM Courses

    WHERE Cname='数据结构')

    AND S.Sno IN

    (SELECT R1.Sno

    FROM Reports R1 INNER JOIN

    (SELECT LEFT(Sno,4) NJ,AVG(Grade) AvgGrd

    FROM Reports

    WHERE Cno=

    (SELECT Cno

    FROM Courses

    WHERE Cname='数据结构')

    GROUP BY LEFT(Sno,4)) R2

    ON LEFT(R1.Sno,4)=R2.NJ

    WHERE R1.Grade>=R2.AvgGrd

    AND R1.Cno=

    (SELECT Cno

    FROM Courses

    WHERE Cname='数据结构')

    );

    (2)查询结果(1分)


评分 分
评语
段落格式
字体
字号
点击上传
x
        

一. 简答题

  * 1
  * 2
  * 3
  * 4
  * 5
  * 6
  * 7
  * 8
  * 9
  * 10
  * 11
  * 12
  * 13
  * 14
  * 15
  * 16
  * 17
  * 18
  * 19

总分:0分
客观题得分:0分
提交 <javascript:;>

<javascript:;>

提示

<javascript:;> <javascript:;>
<javascript:;>

提示

<javascript:;> <javascript:;>

提示

<javascript:;>
<javascript:;>

评分量表模板详情

确定 <javascript:;> 取消 <javascript:;>

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值