表S(SID,SNAME),表SC(SID,CNO,SCORE)
1)、查询出选修的所有课程的分数均在70分以上的学生姓名
2)、查询出得分70分以上的课程占所选课程1/5以上的学生的姓名
希望用标准sql或存储过程实现
小弟是一标准数据库菜鸟,在此诚心求助给位大虾

解决方案 »

  1.   

    1
    select snmae
    (
    select a.sname,count(b.cno) tot_c,sum(decode(sign(b.score-70),-1,0,1)) over_70
    from s a,sc b
    wehre s.sid=sc.sid
    group by a.sname)
    where tot_c=over_70
      

  2.   

    上面写错了不少地方SELECT snmae
      FROM (SELECT   a.sname, COUNT (b.cno) tot_c,
                     SUM (DECODE (SIGN (b.score - 70), -1, 0, 1)) over_70
                FROM s a, sc b
               WHERE s.SID = sc.SID
            GROUP BY a.sname)
     WHERE tot_c = over_70
      

  3.   

    2SELECT snmae
      FROM (SELECT   a.sname, COUNT (b.cno) tot_c,
                     SUM (DECODE (SIGN (b.score - 70), -1, 0, 1)) over_70
                FROM s a, sc b
               WHERE s.SID = sc.SID
            GROUP BY a.sname)
     WHERE  over_70/tot_c>=0.2