主题:学生成绩排名
先解释一下字段含义
学号 :学生学号,随着新学生的加入而增加
学科min : 学生参加学科的最小编号,学生参加学科的编号必须是连续的,如123,2345,01,
学科max : 学生参加学科的最大编号,学生参加学科的编号必须是连续的,如123,2345,01,
学科门数 :学科总门数,学科门数=学科max-学科min+1,
学科编号 :具体某个学科,学科min<=学科编号<=学科max,
成绩 : 某个学科的成绩
tf : 是否参加成绩排名
a0~a160 : 昨天的某个学科的成绩,手工录入,a后面的数字就是学科编号
cj.dbf 是存放学生第一次到前天为止全部学科的以前成绩,相同的学科相同的成绩只记录一次
求参加成绩排名学生昨天所有参加学科的成绩在自己以前该学科成绩里的排名,
例如某学科以前成绩有 1,5,7,6,12,26,24,那么如果该学科昨天成绩
若是1则排名是7;
若是2则排名是7;
若是5则排名是6;
若是6则排名是5;
若是24则排名是2;
若是25则排名是2;
若是26则排名是1;
若是27则排名是1;
若是28则排名是1;
我自己写了一段,感觉不理想,运行速度太慢了,有没有更好更快的方法?
? time(1)
sele 3
use xh
sele 9
use cj
sele 8
use pm
dele all
pack
for rr=2 to recc(3)
sele 3
go rr
if tf='是'
scat fiel 学号 to bh
scat fiel 学科门数 to len1
scat fiel 学科min to min1
scat fiel 学科max to max1
for ee=val(min1) to val(max1)
eec='a'+allt(str(ee))
sele 3
scat fiel &eec to b&eec
sele 9
sort on 成绩/d to tmp_ylb for 学号=bh.and.学科编号=ltri(str(ee))
sele 91
use tmp_ylb
loca for 成绩<=b&eec
paiming=recn()
use
sele 8
appe blan
repl 学号 with bh,学科min with min1,学科max with max1,学科编号 with ltri(str(ee)),成绩 with b&eec,排名 with paiming
endf
endi
endf
inde on 排名 to tmp1
? time(1)
brow