不同分数段人数统计的简易方法

作者在 2014-04-08 23:17:39 发布以下内容
 
sdta程序代码
* 不同分数段人数统计,分数为整数
* 测试表
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


vfp | 阅读 1816 次
文章评论,共0条
游客请输入验证码
浏览107820次
最新评论