select 
    t.*,(select sum(分数) from 表 where 班=t.班) as 总分
from 
    表 as t 
order by 
    总分 desc,t.班,t.分数

解决方案 »

  1.   

    select 学生, 班级,  pscore, cscore
    from (
    select 学生, 班级,  pscore, sum(pscore) over(partition by 班级) cscore 
    from (select 学生,sum(分数) pscore ,班级 from 成绩表 group by 学生,班级 )
    )
    order by cscore desc ,pscore desc
      

  2.   

    select
        *
    from
        (select t.*,(select sum(分数) from 表 where 班=t.班) as 总分 from 表 as t)
    order by 
        总分 desc,班,分数 desc
      

  3.   

    select
        *
    from
        (select t.*,(select sum(分数) from 表 where 班=t.班) as 总分 from 表 as t)
    order by 
        总分 desc,班,分数 desc这个不错
      

  4.   

    select b.学生, b.学生分数, a.班级, a.班级分数 from
    (select  sum(分数) as 班级分数,班级  from 成绩表 group  by 班级) a,
    (select  学生,sum(分数) as 学生分数,班级  from 成绩表 group  by 学生,班级) b
    where a.班级 = b.班级
    order by 班级分数, 学生分数
      

  5.   

    select *
    from (
    select 姓名, 班级,分数, sum(分数) over(partition by 班级) as 总分 )
    order by 总分 desc,分数 desc