日期:2014-05-19  浏览次数:20757 次

请教职工高效写入排序结果
请教一个问题:我想对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
*/