已有学员信息表{学号,班级,学科,姓名,成绩},现要查询出各班语文成绩前10名,并且数学成绩不在倒数10名范围内的人员信息,请写出sql语句实现 

解决方案 »

  1.   


    select *
      from (
    select 学号,班级,姓名,sum(1) over(order by 语文成绩 desc) as 语文成绩排名,
            ,sum(1) over(order by 数学成绩) as 数学成绩排名,
      from 
    select 学号,班级,姓名,MAX(decode(学科,'语文',成绩,0)) as 语文成绩,
           MAX(decode(学科,'语文',成绩,0)) as 数学成绩
      from tab1
     group by 学号,班级,姓名
      ) tmp
      ) where 语文成绩排名 <=10 and 数学成绩排名>10