如果在统计结果中接一个字段累人数计字段就好了。因为那样才是我们经常想用的结果。
每次我都是统计出分段数据导入到excel中继续用公式统计的,那位帮帮提示一下。
每次我都是统计出分段数据导入到excel中继续用公式统计的,那位帮帮提示一下。
*-创建一个分数段标准表,这个标准表可以是自由表,也可以是临时表 CREATE CURSOR bz (下限 N(3),上限 N(3)) NUM=10 && 10分一个分数段,或者手工建一个自由表,前提是分数必须为整数 FSD=80 && 共设置FSD个分数段 FOR I=1 TO FSD IF I=1 INSERT INTO BZ VALUES (0,NUM-I) ELSE INSERT INTO BZ VALUES (NUM1+1,NUM1+NUM) ENDIF NUM1=上限 ENDFOR CREATE CURSOR T2 (班级 C(4),课程 C(10),档次 C(10),人数 N(4)) && 保存统计结果的临时表 SELECT 班级,[语文] 课程,语文 成绩 FROM CJ ; UNION ALL SELECT 班级,[数学] SX,数学 FROM CJ ; UNION ALL SELECT 班级,[综合] ZH,综合 FROM CJ ; UNION ALL SELECT 班级,[英语] YY,英语 FROM CJ ; UNION ALL SELECT 班级,[总分] ZF,总分 FROM CJ INTO CURSOR T0 SELECT BZ SCAN INSERT INTO T2 SELECT 班级,课程,PADL(BZ.下限,3,[0])+[-]+PADL(BZ.上限,3,[0]),COUNT(*) FROM T0 GROUP BY 1,2 WHERE BETWEEN(成绩,BZ.下限,BZ.上限) ENDSCAN CREATE CURSOR FSTJ (档次 C(7),语文 N(3),数学 N(3),综合 N(3),英语 N(3),总分 N(3)) INSERT INTO FSTJ (档次) SELECT PADL(BZ.下限,3,[0])+[-]+PADL(BZ.上限,3,[0]) 档次 FROM BZ SELECT DISTINCT 班级 FROM T0 INTO CURSOR BJ SCAN BJ1=班级 BJ=[BJ]+ALLTRIM(班级) &&以班级名称做为表名称 SELECT *,000 小计 FROM FSTJ INTO TABLE &BJ UPDATE &BJ SET 语文=T2.人数 FROM &BJ INNER JOIN T2 ON &BJ..档次=T2.档次 AND T2.课程=[语文] AND T2.班级==BJ1 UPDATE &BJ SET 数学=T2.人数 FROM &BJ INNER JOIN T2 ON &BJ..档次=T2.档次 AND T2.课程=[数学] AND T2.班级==BJ1 UPDATE &BJ SET 综合=T2.人数 FROM &BJ INNER JOIN T2 ON &BJ..档次=T2.档次 AND T2.课程=[综合] AND T2.班级==BJ1 UPDATE &BJ SET 英语=T2.人数 FROM &BJ INNER JOIN T2 ON &BJ..档次=T2.档次 AND T2.课程=[英语] AND T2.班级==BJ1 UPDATE &BJ SET 总分=T2.人数 FROM &BJ INNER JOIN T2 ON &BJ..档次=T2.档次 AND T2.课程=[总分] AND T2.班级==BJ1 SELECT (BJ) REPLACE ALL 小计 WITH 语文+数学+综合+英语 INSERT INTO (BJ) SELECT [合计],SUM(语文),SUM(数学),SUM(综合),SUM(英语),SUM(总分),SUM(小计) FROM (BJ) ENDSCAN
*-创建一个分数段标准表,这个标准表可以是自由表,也可以是临时表 CREATE CURSOR bz (下限 N(3),上限 N(3)) NUM=10 && 10分一个分数段,或者手工建一个自由表,前提是分数必须为整数 FSD=80 && 共设置FSD个分数段 FOR I=1 TO FSD IF I=1 INSERT INTO BZ VALUES (0,NUM-I) ELSE INSERT INTO BZ VALUES (NUM1+1,NUM1+NUM) ENDIF NUM1=上限 ENDFOR * 统一格式,便于统计 SELECT 班级,[语文] 课程,语文 成绩,SPACE(7) 分数段 FROM CJ ; UNION ALL SELECT 班级,[数学] SX,数学,SPACE(7) 分数段 FROM CJ ; UNION ALL SELECT 班级,[综合] ZH,综合,SPACE(7) 分数段 FROM CJ ; UNION ALL SELECT 班级,[英语] YY,英语,SPACE(7) 分数段 FROM CJ ; UNION ALL SELECT 班级,[总分] ZF,总分,SPACE(7) 分数段 FROM CJ INTO CURSOR T0 READWRITE *BROWSE && 可以查看内容 * 划分分数段 UPDATE T0 SET 分数段=PADL(BZ.下限,3,[0])+[-]+PADL(BZ.上限,3,[0]) FROM BZ WHERE BETWEEN(T0.成绩,BZ.下限,BZ.上限) * 统计不同分数段的人数 SELECT 班级,课程,分数段,COUNT(*) 人数 FROM T0 GROUP BY 1,2,3 INTO CURSOR T2 * 生成统计结果的模板 CREATE CURSOR FSTJ (分数段 C(7),语文 N(3),数学 N(3),综合 N(3),英语 N(3),总分 N(3)) INSERT INTO FSTJ (分数段) SELECT PADL(BZ.下限,3,[0])+[-]+PADL(BZ.上限,3,[0]) 档次 FROM BZ * 生成不重复的班级名称,用于数据统计 SELECT DISTINCT 班级 FROM T0 INTO CURSOR BJ * 生成最后的统计结果 SCAN BJ1=班级 BJ=[BJ]+ALLTRIM(班级) SELECT *,000 小计 FROM FSTJ INTO TABLE &BJ UPDATE &BJ SET 语文=T2.人数 FROM &BJ INNER JOIN T2 ON &BJ..分数段=T2.分数段 AND T2.课程=[语文] AND T2.班级==BJ1 UPDATE &BJ SET 数学=T2.人数 FROM &BJ INNER JOIN T2 ON &BJ..分数段=T2.分数段 AND T2.课程=[数学] AND T2.班级==BJ1 UPDATE &BJ SET 综合=T2.人数 FROM &BJ INNER JOIN T2 ON &BJ..分数段=T2.分数段 AND T2.课程=[综合] AND T2.班级==BJ1 UPDATE &BJ SET 英语=T2.人数 FROM &BJ INNER JOIN T2 ON &BJ..分数段=T2.分数段 AND T2.课程=[英语] AND T2.班级==BJ1 UPDATE &BJ SET 总分=T2.人数 FROM &BJ INNER JOIN T2 ON &BJ..分数段=T2.分数段 AND T2.课程=[总分] AND T2.班级==BJ1 SELECT (BJ) REPLACE ALL 小计 WITH 语文+数学+综合+英语 INSERT INTO (BJ) SELECT [合计],SUM(语文),SUM(数学),SUM(综合),SUM(英语),SUM(总分),SUM(小计) FROM (BJ) BROWSE ENDSCAN