请教职工高效写入排序结果
请教一个问题:我想对10万学生的成绩进行排序,并把名次写入一个字段,怎么做效率最高!
如果有两个成绩相同则都是第一名,而下一个应该为第三名.
表结构:chengji为成绩,paixu为排序结果
id chengji paixu
001 99 1
002 99 1
003 98 3
004 98 3
005 97 5
------解决方案----------------------SQL2005中的实现
SELECT id,
chengji,
RANK() OVER( ORDER BY Chengji DESC) AS paixu
FROM 表名
------解决方案----------------------測試了一下,沒問題
declare @tb table(id varchar(20),chengji int)
insert @tb select
'001 ', 99 union all select
'002 ', 99 union all select
'003 ', 98 union all select
'004 ', 98 union all select
'005 ', 97
--SQL2005中的实现
SELECT id,
chengji,
RANK() OVER( ORDER BY Chengji DESC) AS paixu
FROM @tb
/*
結果:
001 99 1
002 99 1
003 98 3
004 98 3
005 97 5
*/