主题:帮助。。。分数段统计问题
zi584
[专家分:0] 发布于 2012-05-08 17:27:00
比如从440分开始起5分一段,采取0-4,5-9的格式,统计各分段数的人数,人数结果要累加。格式如下表:
650分及以上 649-645 ,644-640,639-635…… 464-460
有什么好方法?
最后更新于:2012-05-09 16:34:00
回复列表 (共9个回复)
沙发
hw2007name [专家分:4790] 发布于 2012-05-08 17:34:00
要求是不很明确,需要更清楚的题目实例,这样别人才好给你解答。
板凳
agt澳 [专家分:840] 发布于 2012-05-08 20:09:00
这个不是编程的问题,应该是数学的基础
我想是个取余的过程
即:
440/5==88
441/5取整后=88 ,441/5取整后*5=440
445/5=89
....
所以将如数据段为X
则X/5取整后,然后*5再还原就是该X的起始分数段啦
3 楼
sdta [专家分:570] 发布于 2012-05-09 07:36:00
最好能给个数据表,便于测试。
4 楼
agt澳 [专家分:840] 发布于 2012-05-09 10:25:00
use xx
disp
select 序号,考号,班级,姓名,总分,int(总分/5)*5初始分数段 from xx
001 1110120001 1101丁。。 573 570
057 1110120057 1101薛。。 572 570
043 1110120043 1101杨。。 550 550
015 1110120015 1101穆。。 541 540
。。。。。。
5 楼
zi584 [专家分:0] 发布于 2012-05-09 16:27:00
没有人数出现啊
6 楼
agt澳 [专家分:840] 发布于 2012-05-10 13:20:00
生成个临时文件:ls
select 序号,考号,班级,姓名,总分,int(总分/5)*5 分数段,1 人数 from xx into curs ls
根据临时文件ls
统计各分段数的人数,人数结果要累加:
select 分数段,'-',5+分数段, sum(人数) 人数 from ls group by 分数段
结果就是:
0- 5 1
250- 255 2
290- 295 1
320- 325 1
325- 330 1
345- 350 1
365- 370 2
370- 375 1
375- 380 1
385- 390 1
390- 395 1
....
7 楼
sdta [专家分:570] 发布于 2012-05-11 12:40:00
EXCEL中的“累加”是什么意思
CLOSE TABLES
USE XX ALIAS XX
SELECT MIN(总分) AS ZFMIN,MAX(总分) AS ZFMAX FROM XX WHERE !EMPTY(总分) INTO CURSOR TEMP
*---[color=FF0000]总分最大值与最小值[/color]
MINZF=ZFMIN &&起始分数
MAXZF=ZFMAX &&结束分数
*---[color=FF0000]设置分数段[/color]
CREATE CURSOR TNAME (分数段 C(10),人数 N(3))
LJ=0
FOR I=1 TO INT((MAXZF-MINZF)/5)+IIF(MOD(MAXZF-MINZF,5)=0,0,1)
JS=INT(MINZF/5)*5+(I-1)*4
IF JS+I-1>=650
IF LJ<1
INSERT INTO TNAME (分数段) VALUES ("FS650_750")
LJ=LJ+1
ENDIF
ELSE
INSERT INTO TNAME (分数段) VALUES ("FS"+PADL(JS+I-1,3,"0")+"_"+PADL(JS+4+I-1,3,"0"))
ENDIF
ENDFOR
*---[color=FF0000]统计各分数段人数[/color]
SELECT XX
SCAN
UPDATE TNAME SET 人数=人数+1 WHERE BETWEEN(XX.总分,VAL(SUBSTR(ALLTRIM(分数段),3,3)),VAL(SUBSTR(ALLTRIM(分数段),7,3)))
ENDSCAN
*---[color=FF0000]创建数据表字段[/color]
SELECT TNAME
SELECT 人数 FROM TNAME INTO ARRAY RS
DIMENSION RS (1,ALEN(RS))
LOCAL ASTRU
ASTRU=""
FOR I=1 TO RECCOUNT()
GO I
ASTRU=ASTRU+ALLTRIM(分数段)+" N(10)"+IIF(I<RECCOUNT(),",","")
ENDFOR
*---[color=FF0000]统计结果[/color]
CREATE CURSOR NEWNAME (&ASTRU)
INSERT INTO NEWNAME FROM ARRAY RS
BROWSE
CLOSE TABLES
8 楼
zi584 [专家分:0] 发布于 2012-05-16 09:43:00
举例说明:
分数段 649-645 644-640 639-635 634-630 .......
人数 1 2 2 5 .......
9 楼
sdta [专家分:570] 发布于 2012-05-16 19:36:00
自己把上面的代码改下就行了
我来回复