2,723
社区成员
发帖
与我相关
我的任务
分享
CREATE CURSOR T (XM C(5),SX N(2),YW N(2),YY N(2),WL N(2),HX N(2),DN N(2),ZZ N(2))
=RAND(-1)
FOR I=1 TO 1000
INSERT INTO T (XM) VALUES (PADL(I,5,[0]))
FOR J=2 TO FCOUNT()
N=RAND()*60
REPLACE (FIELD(J)) WITH N+J
ENDFOR
ENDFOR
T1=SECONDS()
SELECT *,PADL(SX,2,[0])+[,]+PADL(YW,2,[0])+[,]+PADL(YY,2,[0])+[,]+PADL(WL,2,[0])+[,]+PADL(HX,2,[0])+[,]+PADL(DN,2,[0])+[,]+;
PADL(ZZ,2,[0]) NR,0000 TJ,0000 A1,0000 A2,0000 A3,0000 A4,0000 A5,0000 A6,0000 A7 FROM T INTO CURSOR T1 READWRITE
* 说明:A1-A7对应于每门课程成绩出现的次数
LOCAL CSTR
CSTR=[]
SCAN
CSTR=CSTR+ALLTRIM(NR)+IIF(RECNO()<RECCOUNT([T1]),CHR(13)+CHR(10),[])
ENDSCAN
SCAN
CSTR1=STRTRAN(CSTR,NR,[]) && 不含当前记录
SCATTER FIELDS SX,YW,YY,WL,HX,DN,ZZ TO AZD
LOCAL S[7]
FOR I=1 TO 7
S[I]=OCCURS(PADL(AZD(I),2,[0]),CSTR1)
REPLACE TJ WITH TJ+S[I],(FIELD(I+10)) WITH S(I)
ENDFOR
ENDSCAN
MESSAGEBOX([运行时间:]+TRANSFORM(SECONDS()-T1)+[ 秒])
SELECT T1
BROWSE
*--1秒以内:
Create Cursor ta (fa N(2))
Create Cursor T (XM C(5),SX N(2),YW N(2),YY N(2),WL N(2),HX N(2),DN N(2),ZZ N(2))
=Rand(-1)
For I=1 To 1000
Insert Into T (XM) Values (Padl(I,5,[0]))
For J=2 To Fcount()
N=Rand()*60
Replace (Field(J)) With N+J
Insert Into ta (fa) Values (N+J)
Endfor
Endfor
T1=Seconds()
Select *,Padl(SX,2,[0])+[,]+Padl(YW,2,[0])+[,]+Padl(YY,2,[0])+[,]+Padl(WL,2,[0])+[,]+Padl(HX,2,[0])+[,]+Padl(DN,2,[0])+[,]+;
PADL(ZZ,2,[0]) NR,0000 TJ,0000 A1,0000 A2,0000 A3,0000 A4,0000 A5,0000 A6,0000 A7 From T Into Cursor T1 Readwrite
Select fa,Count(*) As fa_cnt Into Cursor tb From ta Group By fa
Update T1 Set A1=tb.fa_cnt-Occurs(Padl(T1.SX,2,'0'),T1.NR) From tb Where T1.SX=tb.fa
Update T1 Set A2=tb.fa_cnt-Occurs(Padl(T1.YW,2,'0'),T1.NR) From tb Where T1.YW=tb.fa
Update T1 Set A3=tb.fa_cnt-Occurs(Padl(T1.YY,2,'0'),T1.NR) From tb Where T1.YY=tb.fa
Update T1 Set A4=tb.fa_cnt-Occurs(Padl(T1.WL,2,'0'),T1.NR) From tb Where T1.WL=tb.fa
Update T1 Set A5=tb.fa_cnt-Occurs(Padl(T1.HX,2,'0'),T1.NR) From tb Where T1.HX=tb.fa
Update T1 Set A6=tb.fa_cnt-Occurs(Padl(T1.DN,2,'0'),T1.NR) From tb Where T1.DN=tb.fa
Update T1 Set A7=tb.fa_cnt-Occurs(Padl(T1.ZZ,2,'0'),T1.NR) From tb Where T1.ZZ=tb.fa
Update T1 Set TJ=A1+A2+A3+A4+A5+A6+A7
Messagebox([运行时间:]+Transform(Seconds()-T1)+[ 秒])
Select T1
Browse