不同分数段人数统计的简易方法
程序代码:
* 不同分数段人数统计,分数为整数 * 测试表 CREATE CURSOR CJK (CJ N(3)) INSERT INTO CJK VALUES (15) INSERT INTO CJK VALUES (28) INSERT INTO CJK VALUES (35) INSERT INTO CJK VALUES (8) INSERT INTO CJK VALUES (2) INSERT INTO CJK VALUES (4) INSERT INTO CJK VALUES (9) INSERT INTO CJK VALUES (64) INSERT INTO CJK VALUES (75) INSERT INTO CJK VALUES (65) INSERT INTO CJK VALUES (125) INSERT INTO CJK VALUES (115) INSERT INTO CJK VALUES (27) INSERT INTO CJK VALUES (88) SELECT MIN(CJ) CJ1,MAX(CJ) CJ2 FROM CJK INTO ARRAY ACJ * 获取最低分及最高分 NMIN=ACJ(1,1) NMAX=ACJ(1,2) * 如果设置10分为一个分数段 NUM=10 && 此处可以改为任意数值 NMIN=FLOOR(NMIN/NUM)*NUM && 最低分数段的开始分 NMAX=IIF(MOD(NMAX,NUM)=0,(CEILING(NMAX/NUM)+1)*NUM,CEILING(NMAX/NUM)*NUM) && 最高分数段的终止分 * 分数段生成 CREATE CURSOR FSD (FS1 N(3),FS2 N(3)) && 保存分数段的临时表 FOR I=NMIN TO INT(NMAX/NUM)-1 IF I=NMIN INSERT INTO FSD VALUES (I,(I+1)*NUM-1) ELSE INSERT INTO FSD VALUES (NUM1,(I+1)*NUM-1) ENDIF NUM1=(I+1)*NUM ENDFOR SELECT *,000 RS FROM FSD WHERE .F. INTO CURSOR CJTJ READWRITE && 保存统计结果的临时表 SELECT FSD SCAN INSERT INTO CJTJ SELECT FSD.FS1,FSD.FS2,COUNT(*) RS FROM CJK WHERE BETWEEN(CJK.CJ,FSD.FS1,FSD.FS2) ENDSCAN SELECT CJTJ BROWSE
[ 本帖最后由 sdta 于 2014-3-14 19:52 编辑 ]