| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 631 人关注过本帖
标题:又一个截取和统计的问题!麻烦大家!
只看楼主 加入收藏
wuvdong
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2010-10-8
结帖率:60%
收藏
已结贴  问题点数:30 回复次数:6 
又一个截取和统计的问题!麻烦大家!
书才看了几页.........唉~
==================================
M个班级的N名同学对自己班的8名班干部进行评选,评选条件有5项,
分别是:管理态度、生活作风、帮助他人、纪律要求、学习态度,每位同学都对应5项,
每一项有优良中差4个选项分别是ABCD分值是20、18、12、8
班长是1-5 体委是6-10 劳委是11-15 团委是16-20
纪委是21-25 美术是26-30 男舍长是31-35 女舍长36-40
填涂在一张答题卡上!统计每个班干部每一项的得分
一条记录代表一个同学涂写的答题卡数据,
=================================================
01表有2个字段,bj和abcd字段
01表中的记录是这样
BJ abcd
1 ABCBAABCBAABCBAABCBAABCBAABCBAABCBAABCBA
1 ABCBAABCBAABCBAABCBAABCBAABCBAABCBAABCBA
2 ABCBAABCBAABCBAABCBAABCBAABCBAABCBAABCBA
3 ABCBAABCBAABCBAABCBAABCBAABCBAABCBAABCBA
.....
57 ABCBAABCBAABCBAABCBAABCBAABCBAABCBAABCBA
班级有很多,abcd记录都不同,但都是40个字符,每5个字符对应一个班干部。
ABCD分别对应的评分是20、18、12、8分
=================================================
每一个单项分都是01表对应项的均分,
比如:
第1个人的第一项是所有记录的sub(abcd,1,1)的均分 ,第二项是所有记录的sub(abcd,2,1)的均分
第2个人的第一项是所有记录的sub(abcd,6,1)的均分 ,第二项是所有记录的sub(abcd,7,1)的均分
班级  班干部    管理态度   生活作风   帮助他人   纪律要求   学习态度
1     班长
1     体委
1     劳委
1     团委
1     纪委
1     美术
1     男舍长
1     女舍长

bj表是这样的
bj    bh      pj1     pj2    pj3       pj4      pj5
1     j1
1     j2
1     j3
1     j4
1     j5
1     j6
1     j7
1     j8
2     j1
2     j2
2     j3
2     j4
2     j5
2     j6
2     j7
2     j8
求老师们帮忙!
搜索更多相关主题的帖子: 麻烦 统计 
2010-10-10 17:48
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:10 
SET SAFETY OFF
SET TALK OFF
CLEAR
FOR k=1 TO M &&M是班级数,提前在某地方赋值了,或者直接改为具体的班级数
  cTable=PADL(k,2,'0')+'表'
  SELECT STR(k,2) 班级,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd, 1,1),'ABCD')*2-1,2))) 班长管理,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd, 2,1),'ABCD')*2-1,2))) 班长生活,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd, 3,1),'ABCD')*2-1,2))) 班长帮助,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd, 4,1),'ABCD')*2-1,2))) 班长纪律,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd, 5,1),'ABCD')*2-1,2))) 班长学习,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd, 6,1),'ABCD')*2-1,2))) 体委管理,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd, 7,1),'ABCD')*2-1,2))) 体委生活,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd, 8,1),'ABCD')*2-1,2))) 体委帮助,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd, 9,1),'ABCD')*2-1,2))) 体委纪律,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,10,1),'ABCD')*2-1,2))) 体委学习,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,11,1),'ABCD')*2-1,2))) 团委管理,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,12,1),'ABCD')*2-1,2))) 团委生活,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,13,1),'ABCD')*2-1,2))) 团委帮助,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,14,1),'ABCD')*2-1,2))) 团委纪律,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,15,1),'ABCD')*2-1,2))) 团委学习,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,16,1),'ABCD')*2-1,2))) 劳委管理,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,17,1),'ABCD')*2-1,2))) 劳委生活,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,18,1),'ABCD')*2-1,2))) 劳委帮助,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,19,1),'ABCD')*2-1,2))) 劳委纪律,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,20,1),'ABCD')*2-1,2))) 劳委学习,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,21,1),'ABCD')*2-1,2))) 纪委管理,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,22,1),'ABCD')*2-1,2))) 纪委生活,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,23,1),'ABCD')*2-1,2))) 纪委帮助,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,24,1),'ABCD')*2-1,2))) 纪委纪律,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,25,1),'ABCD')*2-1,2))) 纪委学习,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,26,1),'ABCD')*2-1,2))) 美术管理,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,27,1),'ABCD')*2-1,2))) 美术生活,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,28,1),'ABCD')*2-1,2))) 美术帮助,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,29,1),'ABCD')*2-1,2))) 美术纪律,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,30,1),'ABCD')*2-1,2))) 美术学习,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,31,1),'ABCD')*2-1,2))) 男舍管理,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,32,1),'ABCD')*2-1,2))) 男舍生活,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,33,1),'ABCD')*2-1,2))) 男舍帮助,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,34,1),'ABCD')*2-1,2))) 男舍纪律,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,35,1),'ABCD')*2-1,2))) 男舍学习,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,36,1),'ABCD')*2-1,2))) 女舍管理,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,37,1),'ABCD')*2-1,2))) 女舍生活,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,38,1),'ABCD')*2-1,2))) 女舍帮助,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,39,1),'ABCD')*2-1,2))) 女舍纪律,;
       SUM(VAL(SUBSTR('20181208',AT(SUBSTR(abcd,40,1),'ABCD')*2-1,2))) 女舍学习;
       FROM (cTable);
       INTO TABLE tmp
  FOR i=1 TO 8
    SELECT tmp
    x1=EVALUATE(FIELD(i*5-3))/RECCOUNT(cTable)
    x2=EVALUATE(FIELD(i*5-2))/RECCOUNT(cTable)
    x3=EVALUATE(FIELD(i*5-1))/RECCOUNT(cTable)
    x4=EVALUATE(FIELD(i*5+0))/RECCOUNT(cTable)
    x5=EVALUATE(FIELD(i*5+1))/RECCOUNT(cTable)
    INSERT INTO bj VALUES (tmp.班级,'j'+STR(i,1),x1,x2,x3,x4,x5)
  ENDFOR
  SELECT bj
  BROWSE
ENDFOR
RETURN


[ 本帖最后由 Tiger5392 于 2010-10-10 21:24 编辑 ]

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2010-10-10 21:22
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:20 
先执行这样的查询:
select bj,avg(iif(subs(abcd,1,1)='A',20,iif(subs(abcd,1,1)='B',18,iif(subs(abcd,1,1)='C',12,8)))) as 班长管理,.... from 表 group by bj
再将查询结果转置成你需要的格式就行了

★★★★★为人民服务★★★★★
2010-10-10 21:23
wuvdong
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2010-10-8
收藏
得分:0 
非常感谢Tiger5392老师和cnfarer老师这么晚了还回复我的问题! 谢谢2位老版!
老虎版主提供的代码 提示找不到别名,cnfarer版主提供的我想问下是全体的均分还是一个班的均分,我没看明白!
2位晚安!明天再向2位请教!早点上班呀·嘿嘿
2010-10-10 22:42
Tiger5392
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:88
帖 子:2775
专家分:2237
注 册:2006-5-17
收藏
得分:0 
以下是引用wuvdong在2010-10-10 22:42:18的发言:

非常感谢Tiger5392老师和cnfarer老师这么晚了还回复我的问题! 谢谢2位老版!
老虎版主提供的代码 提示找不到别名,cnfarer版主提供的我想问下是全体的均分还是一个班的均分,我没看明白!
2位晚安!明天再向2位请教!早点上班呀·嘿嘿
楼主可不能直接运行那些程序的,因为我不知道你的具体表名。你运行前先看看代码表示的意思,需要修改的

感言:学以致用。 博客:http://www./blog/user14/65009/index.shtml email:Tiger5392@
2010-10-11 09:47
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:0 
那个SQL语句,是按班级得到被评测人的评测的平均分。然后UNION查询(把一行按人拆成8行)就可以转化成你要的那种形式!

★★★★★为人民服务★★★★★
2010-10-12 07:04
wuvdong
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2010-10-8
收藏
得分:0 
谢谢两位版主老师的回答!谢谢!
2010-10-14 12:37
快速回复:又一个截取和统计的问题!麻烦大家!
数据加载中...
 
   



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

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