标题:请帮忙,按学校分段统计总分数
只看楼主
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:4 
回复 10楼 aaaaaa
看8楼的意思,就是这样。


[此贴子已经被作者于2016-7-8 08:36编辑过]

2016-07-08 08:35
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
还可以这样显示,或者10楼的显示。
SELECT 学校,SUM(IIF(合计总分>=600,1,0)) as 【600_900】,SUM(IIF(合计总分>=500 AND 合计总分<600,1,0)) as 【500_599】,;
  SUM(IIF(合计总分>=400 AND 合计总分<500,1,0)) as 【400_499】,SUM(IIF(合计总分>=300 AND 合计总分<400,1,0)) as 【300_399】,;
  SUM(IIF(合计总分>=200 AND 合计总分<300,1,0)) as 【200_299】;
  FROM cj GROUP BY 学校
2016-07-08 09:01
aaaaaa
Rank: 8Rank: 8
等 级:贵宾
威 望:21
帖 子:796
专家分:937
注 册:2012-9-4
得分:0 
如果每个学校的分数段是一样的,12楼的代码是最经典的。
好像楼主的 144 说每个学校的分数段是不一样的,比如:
A学校的每个同学的总分:>=600,>=590,>=580,>=570,>=560
B学校的每个同学的总分:>=650,>=590,>=580
C学校的每个同学的总分:>=590,>=580,>=570,>=560
D学校的每个同学的总分:>=570
E学校的每个同学的总分:>=560
如果这这样子的,好像要把 12楼的表横表转竖表
或者如果每3分为一个区分的间隔,区间过密,好像也要把表横表转竖表

最好楼主交代清晰,发一张结果图上来。
猜谜是很痛苦的。

民工子弟学校22班团小组长阳光模特队长冲锋篮球队前锋小苹果合唱队领唱蓝天舞蹈队编舞
2016-07-08 09:20
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:4 
我有一段代码,是以任意输入5分或10分或3分分段的统计各校在该段的人数,你只要把有关学校,总分的字段名改一下就可以用。出来的结果是竖式排列,若在变横式只再转换一下。
sET TALK Off
SET SAFE OFF
clear all

fsd='10 '  
@10,10 SAY '请打入分段分数: ' GET fsd
READ
**分段分--
n=val(alltr(fsd))

cdir=GETDIR("D:","请选择<中考/高考>成绩分段统计人数的bmk数据库的目录")
CD (cdir)   
cdir=left(cdir,len(cdir)-1)

cd (cdir)  &&进入相应的目录
if !file('bmk.dbf')
wait "所选的bmk文件不存在,请退出重找!" window timeout 5  AT SROWS()/2,(SCOLS()/4)
clear
retu
else
use bmk
if vartype(xh)="U"
   WAIT "本库缺少xh或bmddm或tot1字段,请退出修改后再统计!" WINDOW TIMEOUT 5  AT SROWS()/2,(SCOLS()/4)

clear
retu

else


**--通用代码
select *,iif(mod(tot1,n)=0,ceil(tot1/n)*n,ceil(tot1/n)*n-n)as fs1,iif(mod(tot1,n)=0,ceil(tot1/n)*n+n-1,ceil(tot1/n)*n-1)as fs2 from bmk into table tmp1

select bmk.*,tmp1.fs1,tmp1.fs2,str(tmp1.fs1,3)+"-"+str(tmp1.fs2,3) as 分段 from bmk,tmp1 where bmk.xh=tmp1.xh INTO table tmp2

select bmddm,分段,count(分段) as 人数 from tmp2 group by bmddm,分段 order by bmddm,分段  into table bmdfdtj
brow

WAIT "统计完毕,请核对库tmp1(分数分段库),tmp2库(临时库),bmdfdtj库(各报名点分段统计库) " WINDOW TIMEOUT 5  AT SROWS()/2,(SCOLS()/4)
endif
endif
CLEA
set talk on
set safety on


[此贴子已经被作者于2016-7-8 10:10编辑过]

2016-07-08 10:00
sylknb
Rank: 4
等 级:贵宾
威 望:14
帖 子:1519
专家分:174
注 册:2006-6-3
得分:0 
[attach]85346[/attach]以10一段的结果
以5分一段
[attach]85347[/attach]
100分一段
[attach]85348[/attach]
各10,5,100分段.rar (154.45 KB)
结果图

[此贴子已经被作者于2016-7-8 10:21编辑过]

2016-07-08 10:17
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:4 
程序代码:
close databases all
select min(总分) df, max(总分) gf from cj into array fs
select distinct 学校 from cj into cursor xxmc
ndf=fs[1,1]
ngf=fs[1,2]
fsd=16 && 此处分数段可以随意更改
zds=ceiling(ngf/fsd) && 可设置的字段数
messagebox("当前字段数:"+transform(zds))
if zds>254
    return
endif
* 创建分数段表
create cursor fsd (n n(4), f1 n(3),f2 n(3))
f11=0
lcstr=""
for i=1 to zds
    insert into fsd values (i,f11,fsd*i)
    lcstr=lcstr+"F"+padl(f11,3,"0")+"_"+padl(i*fsd,3,"0")+" N(6),"
    f11=fsd*i+1
endfor
lcstr=left(lcstr,len(lcstr)-1)
* 创建统计表
create cursor tjb (学校 c(6),&lcstr)
append from dbf("xxmc")
index on 学校 tag xx
select 学校,总分,n,f1,f2 from cj,fsd where between(总分,f1,f2) into cursor temp
select temp
set relation to 学校 into tjb
scan
    replace ("F"+padl(temp.f1,3,"0")+"_"+padl(temp.f2,3,"0")) with evaluate("F"+padl(temp.f1,3,"0")+"_"+padl(temp.f2,3,"0"))+1 in tjb
endscan
set relation to 
select tjb
set order to
* 列小计
insert into tjb (学校) values ("小计")
for i=2 to fcount()
    czdm=field(i)
    sum evaluate(field(i)) to x
    replace record reccount() (field(i)) with x
endfor
* 行合计
alter table tjb add 合计 n(6)
hj=""
for i=2 to fcount()-1
    hj=hj+"+"+(field(i))
endfor
replace all 合计 with evaluate(hj)
* 浏览统计结果
browse


[此贴子已经被作者于2016-7-10 10:35编辑过]


坚守VFP最后的阵地
2016-07-08 13:58
chinazylyp
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-7-5
得分:0 
回复 12楼 mywisdom88
谢谢大侠,我要的就是这样的效果。
2016-07-09 09:05
chinazylyp
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2016-7-5
得分:0 
谢谢大家,大家给的结果非常好,问题已经解决。
2016-07-09 09:21
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
类似这种代码,要考虑到代码的通用性,如果分数段发生变化,代码修改工作量就大了,还容易发生错误。

坚守VFP最后的阵地
2016-07-10 10:34



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-466718-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.289994 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved