SNO  CNO   DEGREE
---- ----- ---------------------------------------
103  3-245 86.0
105  3-245 75.0
109  3-245 68.0
103  3-105 92.0
105  3-105 88.0
109  3-105 76.0
101  3-105 64.0
107  3-105 91.0
108  3-105 78.0
101  6-166 85.0
107  6-166 79.0
108  6-166 80.0
105  6-166 82.0(13 行受影响)
SNO     --成绩ID
  CNO    --课程编号
  DEGREE   --分数--33、查询成绩比该课程平均成绩低的同学的成绩表。--34查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree.--35查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”的同学的Cno、Sno和Degree,

解决方案 »

  1.   

    --33、查询成绩比该课程平均成绩低的同学的成绩表。select * from tab where DEGREE<(select avg(degree) from tab)--34查询选修编号为“3-105”且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree.
    select * from tab where cno='3-105' and degree >(select degree from tab where cno='3-245')
      

  2.   

    hyrongg(视爱情为奢侈品) 
    你的33题做得不合要求,是
    查询成绩比该课程平均成绩低的同学的成绩表。每一门的课程要比该平均课程低的学生成绩信息,
    你的是总成绩了
      

  3.   

    create table tab(sno int,cno varchar(20),degree float)
    insert into tab select 103,'3-245',86
    union
    select 105,'3-245',75
    select * from tab t1 where degree<(select avg(degree) from tab t2 where t2.cno=t1.cno)
    -------------------
    105 3-245 75.0
      

  4.   

    create table tab1(SNO int, CNO varchar(20),  DEGREE dec(15,1))
    insert tab1 select 103,  '3-245', 86.0
    union all select 105,  '3-245', 75.0
    union all select 109,  '3-245', 68.0
    union all select 103,  '3-105', 92.0
    union all select 105,  '3-105', 88.0
    union all select 109,  '3-105', 76.0
    union all select 101,  '3-105', 64.0
    union all select 107,  '3-105', 91.0
    union all select 108,  '3-105', 78.0
    union all select 101,  '6-166', 85.0
    union all select 107,  '6-166', 79.0
    union all select 108,  '6-166', 80.0
    union all select 105,  '6-166', 82.0--33、查询成绩比该课程平均成绩低的同学的成绩表。
    select * from
    tab1 a
    left join
    (select CNO,sum(DEGREE)/count(1)de from tab1 group by CNO)b
    on b.cno=a.cno
    where b.de>a.degree