年级     班级     学号      学期              考试类型 课程号  分数      
初一 1班 s0001 2006-2007上学期 平时测试  c0001 96.00
初一 1班 s0002 2006-2007上学期 平时测试  c0001 85.00
初一 1班 s0003 2006-2007上学期 平时测试  c0001 92.00
初一 1班 s0001 2006-2007上学期 平时测试  c0004 53.00
初一 1班 s0002 2006-2007上学期 平时测试  c0004 96.00
初一 1班 s0003 2006-2007上学期 平时测试  c0004 76.00
初二 1班 s0007 2006-2007上学期 平时测试  c0003 83.00
初一 2班 s0004 2006-2007上学期 平时测试  c0001 80.00
初一 2班 s0004 2006-2007上学期 平时测试  c0004 80.00
初一 2班 s0004    2006-2007上学期 平时测试  c0002 80.00
初二 2班 s0008 2006-2007上学期 平时测试  c0003 93.00
初一 1班 s0001 2006-2007上学期 期中考试  c0001 96.00
初一 1班 s0002 2006-2007上学期 期中考试  c0001 85.00
初一 1班 s0003 2006-2007上学期 期中考试  c0001 92.00
初一 1班 s0001 2006-2007下学期 平时测试  c0001 70.00
初一 1班 s0002 2006-2007下学期 平时测试  c0001 82.00
以上是我的数据,我想实现的是某个年级班级的所有学生在某个学期,某个考试类型里面的总分排序。就是年级班级的学生在一次考试总分的排序。谢谢大家帮帮忙,我已经弄了一天了。

解决方案 »

  1.   

    select 学号,sum(分数)
    from tables
    group by 学号
    order by 2 desc上面的语句是猜的,毕竟不是十分了解你的需求。
      

  2.   

     (不要高估你的汉语表达能力或者我的汉语理解能力)
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  3.   

    if object_id('[tb]') is not null drop table [tb]
    go
    create table [tb]([年级] varchar(4),[班级] varchar(3),[学号] varchar(5),[学期] varchar(15),[考试类型] varchar(8),[课程号] varchar(5),[分数] numeric(4,2))
    insert [tb]
    select '初一','1班','s0001','2006-2007上学期','平时测试','c0001',96.00 union all
    select '初一','1班','s0002','2006-2007上学期','平时测试','c0001',85.00 union all
    select '初一','1班','s0003','2006-2007上学期','平时测试','c0001',92.00 union all
    select '初一','1班','s0001','2006-2007上学期','平时测试','c0004',53.00 union all
    select '初一','1班','s0002','2006-2007上学期','平时测试','c0004',96.00 union all
    select '初一','1班','s0003','2006-2007上学期','平时测试','c0004',76.00 union all
    select '初二','1班','s0007','2006-2007上学期','平时测试','c0003',83.00 union all
    select '初一','2班','s0004','2006-2007上学期','平时测试','c0001',80.00 union all
    select '初一','2班','s0004','2006-2007上学期','平时测试','c0004',80.00 union all
    select '初一','2班','s0004','2006-2007上学期','平时测试','c0002',80.00 union all
    select '初二','2班','s0008','2006-2007上学期','平时测试','c0003',93.00 union all
    select '初一','1班','s0001','2006-2007上学期','期中考试','c0001',96.00 union all
    select '初一','1班','s0002','2006-2007上学期','期中考试','c0001',85.00 union all
    select '初一','1班','s0003','2006-2007上学期','期中考试','c0001',92.00 union all
    select '初一','1班','s0001','2006-2007下学期','平时测试','c0001',70.00 union all
    select '初一','1班','s0002','2006-2007下学期','平时测试','c0001',82.00select *,
    排名=(select count(1)+1 from
    (select 年级,班级,学号,学期,考试类型,sum(分数) as 总分
    from tb
    group by  年级,班级,学号,学期,考试类型) b
    where a.年级=b.年级 and a.班级=b.班级 and a.学期=b.学期 and a.考试类型=b.考试类型 and a.总分>b.总分
    )
    from
    (select 年级,班级,学号,学期,考试类型,sum(分数) as 总分
    from tb
    group by  年级,班级,学号,学期,考试类型
    ) a
    order by 年级,班级,学期,考试类型,排名
    --测试结果:
    /*
    年级   班级   学号    学期              考试类型     总分                                  排名          
    ---- ---- ----- --------------- -------- ---------------------------------------- ----------- 
    初二   1班   s0007 2006-2007上学期    平时测试     83.00                                    1
    初二   2班   s0008 2006-2007上学期    平时测试     93.00                                    1
    初一   1班   s0001 2006-2007上学期    平时测试     149.00                                   1
    初一   1班   s0003 2006-2007上学期    平时测试     168.00                                   2
    初一   1班   s0002 2006-2007上学期    平时测试     181.00                                   3
    初一   1班   s0002 2006-2007上学期    期中考试     85.00                                    1
    初一   1班   s0003 2006-2007上学期    期中考试     92.00                                    2
    初一   1班   s0001 2006-2007上学期    期中考试     96.00                                    3
    初一   1班   s0001 2006-2007下学期    平时测试     70.00                                    1
    初一   1班   s0002 2006-2007下学期    平时测试     82.00                                    2
    初一   2班   s0004 2006-2007上学期    平时测试     240.00                                   1(所影响的行数为 11 行)
    */
      

  4.   

    select 年级,班级,学号,学期,考试类型,sum(分数) as 总分
    from tb
    group by  年级,班级,学号,学期,考试类型
    这里你选出的数据,是每一分组的组合,还是。