做一个统计。比如某学校的学生成绩。当我将年级分组后对每个班的总成绩排名次。将这个统计结果插入一个新表。求解分组后如何排名次。如: 
初一 3班 465 1 
初一 1班 455 2 
初一 2班 444 3 
初二 4班 524 1 
初二 3班 475 2 
初二 1班 455 3 
初二 2班 444 4  
没什么分,真心求教。

解决方案 »

  1.   

    select 年级,班级,总成绩,
      (select count(1) from tb where 年级=t.年级 and 总成绩>=t.总成绩) as 排名
    from tb t
      

  2.   


    create table fan
    (年级 varchar(6),班级 varchar(6),总成绩 int)insert into fan
    select '初一', '3班', 465 union all
    select '初一', '1班', 455 union all
    select '初一', '2班', 444 union all
    select '初二', '4班', 524 union all
    select '初二', '3班', 475 union all
    select '初二', '1班', 455 union all
    select '初二', '2班', 444
    select 年级,班级,总成绩,
    row_number() over(partition by 年级 order by 总成绩 desc) '名次'
    from fan
    order by 年级 desc/*
    年级     班级     总成绩         名次
    ------ ------ ----------- --------------------
    初一     3班     465         1
    初一     1班     455         2
    初一     2班     444         3
    初二     4班     524         1
    初二     3班     475         2
    初二     1班     455         3
    初二     2班     444         4(7 row(s) affected)
    */