标题:求助贴,根据表内数据的条件,重新计算赋值
只看楼主
x271942906
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-5-11
结帖率:0
已结贴  问题点数:20 回复次数:23 
求助贴,根据表内数据的条件,重新计算赋值

这是dbf文件
第一行是字段名
请教一下如果要实现 “调整后数据”这个字段里面的值该怎么写?
把每个班里面所有的“班级平均数”加起来以后,除以这个班里面“reason”字段不为‘1’的记录条数
如1班里面有10个人,reason=‘1’的有2个人,那么最后“调整后数据”的值就是70*10/8=87.5
搜索更多相关主题的帖子: reason 平均数 记录 
2016-05-11 16:03
x271942906
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-5-11
得分:0 
有人帮忙看一下,怎么实现啊?
2016-05-11 16:29
baichuan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:37
帖 子:953
专家分:589
注 册:2006-3-13
得分:4 
先统计每个班级reason不是1的人数X,然后统计班级总人数Y,然后用平均数*X/Y 再替换即可!

count for ...... to x
count for ...... to y
repl all with 班级平均数*x/y for ......

2016-05-11 16:31
fyyylyl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:16
帖 子:287
专家分:676
注 册:2006-5-22
得分:4 
SELECT a.姓名,a.班级,a.班级平均数,a.reason,IIF(a.reason<>1,c.调整后数据,0) 调整后数据;
    FROM 原表 a,(SELECT b.班级,b.合计/b.有效数 调整后数据 ;
        FROM (SELECT 班级,SUM(班级平均数) 合计,SUM(IIF(reason<>1,1,0)) 有效数 FROM 原表  GROUP BY 班级) b) c;
    WHERE a.班级=c.班级

2016-05-11 16:37
x271942906
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-5-11
得分:0 
b.合计  b.有效数 怎么出来的呢
2016-05-11 16:47
fyyylyl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:16
帖 子:287
专家分:676
注 册:2006-5-22
得分:0 
c从b来,b从a(原表)来——结果对不?

2016-05-11 16:50
厨师王德榜
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:183
帖 子:942
专家分:4724
注 册:2013-2-16
得分:4 
4楼的答案没验证过,不过如果是我来做这个,我还是习惯分步来做,不习惯用一条SQL语句来解决。代码就不写了,比较简单。
2016-05-11 17:10
x271942906
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-5-11
得分:0 
需不需要用下循环语句
2016-05-11 17:42
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:4 
上传个表,便于测试

坚守VFP最后的阵地
2016-05-11 18:38
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:4 
程序代码:
SET ENGINEBEHAVIOR 70
Create Cursor Temp (班级 C(4), 班级平均数 n(4), reason n(4),调整后数据 n(6))
Insert Into Temp Values ("1班", 70, 0 ,0)
Insert Into Temp Values ("1班", 70, 0 ,0)
Insert Into Temp Values ("1班", 70, 1 ,0)
Insert Into Temp Values ("1班", 70, 1 ,0)
Insert Into Temp Values ("1班", 70, 2 ,0)
Insert Into Temp Values ("1班", 70, 2 ,0)
Insert Into Temp Values ("1班", 70, 3 ,0)
Insert Into Temp Values ("1班", 70, 3 ,0)
Insert Into Temp Values ("1班", 70, 4 ,0)
Insert Into Temp Values ("1班", 70, 5 ,0)
Insert Into Temp Values ("2班", 85, 0 ,0)
Insert Into Temp Values ("2班", 85, 0 ,0)
Insert Into Temp Values ("2班", 85, 1 ,0)
Insert Into Temp Values ("2班", 85, 1 ,0)
Insert Into Temp Values ("2班", 85, 0 ,0)
Insert Into Temp Values ("2班", 85, 0 ,0)
Insert Into Temp Values ("2班", 85, 0 ,0)
sele 班级,sum(班级平均数) 参数1 ,SUM(IIF(reason<>1,1,0)) 参数2 from temp grou by 班级 into curs a1
sele temp.班级, temp.班级平均数, temp.reason, ROUND(a1.参数1/a1.参数2,1) 调整后数据 from temp,a1 where temp.班级 = a1.班级
2016-05-11 19:46



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




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

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