1.相同分数占名次(12245668……)prg程序代码:
USE 成绩排名表
INDEX on -总分 TO 临时表LSB &&总分从大到小排列
GO TOP &&定位到第一行
n名次 = 1 &&名次,记号,从1 到 N 不重复
n总分 = 0 &&用来存上一条记录的总分
DO whil !EOF() IF n总分 = 成绩排名表.总分 &&判断与上一条的总分是否一样 REPLACE 成绩排名表.排名1 WITH 临时字段LSZD&&如果一样,用上次记录名次替换 ELSE REPLACE 成绩排名表.排名1 WITH n名次&&否则,用不重复新名次 ENDIF 临时字段LSZD = 成绩排名表.排名1&&存下这条记录的名次 n总分 = 成绩排名表.总分 &&用于下条记录的判断 n名次 = n名次 +1&&'名次(记号),从1到N不重复'+1 SKIP&&下一条
ENDDO
2.相同分数不占名次(122345667……)prg程序代码: close all
use 成绩排名表
index on -总分 to 临时表2
go top
n=1
f=总分
do while !eof() if 总分!=f f=总分 n=n+1 endif replace 排名2 with n skip
enddo
set index to
erase 临时表2
brow
return
*相同分数不占名次(122345667……)
SELECT 总分,RECNO() 排名 FROM (SELECT DISTINCT 总分 FROM 成绩排名表 ORDER BY 总分 DESC) A INTO CURSOR T1
UPDATE 成绩排名表 SET 排名=T1.排名 FROM T1 WHERE 成绩排名表.总分=T1.总分
*相同分数占名次(12245668……)
UPDATE 成绩排名表 SET 排名=(SELECT COUNT(*)+1 FROM 成绩排名表 B WHERE 成绩排名表.总分<B.总分)