年级 班级 学号 学期 考试类型 课程号 分数
初一 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班 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
以上是我的数据,我想实现的是某个年级班级的所有学生在某个学期,某个考试类型里面的总分排序。就是年级班级的学生在一次考试总分的排序。谢谢大家帮帮忙,我已经弄了一天了。
from tables
group by 学号
order by 2 desc上面的语句是猜的,毕竟不是十分了解你的需求。
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
参考一下这个贴子的提问方式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)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
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 行)
*/
from tb
group by 年级,班级,学号,学期,考试类型
这里你选出的数据,是每一分组的组合,还是。