1、select b.id,b.name,a. 
   from  su_ a, 
         student b,
         subject c 
   where a.sno = c.no
    and  a.sid = b.id
    and  b.name = '王雷'
    and  c.sna  = '数学'
2、select b.id,b.name,average(a.)
   from  su_ a, 
         student b,
         subject c 
   where a.sno = c.no
    and  a.sid = b.id
    and  b.name = '王雷'
   group by b.id,b.name,a.sno
剩下的自己学着写,哪家的老师出这么没创意的题目?
要是有几十个叫王雷的怎么办?要是有几个科目有相同的名字怎么办?谁家的学校数据库里永远只有一个“高三一班”?
好好学习,天天向上,也要选点好题目嘛

解决方案 »

  1.   

    1 查询‘王雷’的‘数学’成绩;
    select  from su_ a where a.sid = (select id from student where name = "王雷")
    and sno = ( select sno from subject where sna = "数学");
    2 统计‘王雷’的平均分;
    select avg() from su_ a where a.sid = (select id from student where name = "王雷");
    3 统计‘高三一班’所有‘数学’和‘英语’均在95分以上的女生人数;
    4 按照科目分类现实‘高三一班’该科的平均分
      

  2.   

    --the first oneselect 
    from su_ a join student b
            on a.sid=b.id
    join subject c
            on a.sno=c.sno
    where b.name='王雷' and c.sna='数学';--the second oneselect avg()
    from su_ a
    where exists(select 1 from student where id=a.sid and name='王雷');
      

  3.   

    --the forth oneselect sno,avg() as 
    from su_ a
    where exists(select 1 from students 
                 where id=a.sid and classid=(select id
                                             from class
                                             where cname='高三一班' ));
      

  4.   

    Select c. From subject a,sudent b,su_ c 
    Where a.sno=c.sno And b.Id=c.sid And b.Name='王雷' And a.sna='数学';Select Avg(c.) From subject a,sudent b,su_ c 
    Where a.sno=c.sno And b.Id=c.sid And b.Name='王雷' ;Select Count(*) From subject a,sudent b,su_ c,Class d 
    Where a.sno=c.sno And b.Id=c.sid And b.classid=d.Id And d.cname='高三一班' And b.sex='f'
    And (a.sna='数学' And c.>95 ) And (a.sna='英语' And c.>95 );Select a.sna,Avg(c.) From subject a,sudent b,su_ c,Class d 
    Where a.sno=c.sno And b.Id=c.sid And b.classid=d.Id And d.cname='高三一班'
    Group By a.sna;