成绩查询
有一成绩表,结构如下: 
 考号   char(9) 
 姓名   char(6) 
 班级   char(2) 
 语文   int 
 数学   int 
 英语   int 
 总分   int 
 考试名称   char(20) 
 表中有五个班级3次考试成绩,如何查询某班某次考试总分前100名有多少人? 
 如何查询某班3次考试总分前100名各有多少人?
------解决方案--------------------总分前100名中各班各有多少人? 
 考试名称 char(20)来区分这三次考试?
------解决方案--------------------  insert tb(考号,姓名,班级,总分,考试名称) 
 select  '1 ', 'aaa ', 'c1 ',100, 'bbb ' union all 
 select  '2 ', 'bbb ', 'c1 ',50, 'bbb ' union all 
 select  '3 ', 'cccc ', 'b ',100, 'bbb ' union all 
 select  '4 ', 'bbb ', 'c1 ',50, 'ccc ' union all 
 select  '5 ', 'aaa ', 'c1 ',100, 'ccc ' union all 
 select  '5 ', 'cccc ', 'b ',50, 'ccc '      
 --某班某次考试总分前100名有多少人 
 select count(*) from (   
 select 考号,姓名,班级,总分,考试名称,sorId=(select count(distinct 总分) from tb where a.考试名称=考试名称 and a.总分 <=总分) 
 from tb a ) c  
 where 考试名称= 'bbb ' and 班级= 'c1 ' and sorId <=200     
 --查询某班3次考试总分前100名各有多少人(刚才每班只考试三次。如果多于三次,请加班级OR) 
 select count(*) from (   
 select 考号,姓名,班级,总分,考试名称,sorId=(select count(distinct 总分) from tb where a.考试名称=考试名称 and a.总分 <=总分) 
 from tb a ) c  
 where  班级= 'c1 ' and sorId <=200