标题:求助贴,根据表内数据的条件,重新计算赋值
只看楼主
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
程序代码:
Create Cursor Temp (班级 C(4), 班级平均数 n(4), reason n(4),调整后数据 n(6,2))
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)
select 班级,班级平均数*count(*) /sum(iif(reason=1,0,1)) nn from temp group by 班级,班级平均数 into cursor tt
scan
    update temp set 调整后数据=tt.nn where temp.班级=tt.班级 and reason!=1
endscan
select temp
browse

VFP6 CODE

坚守VFP最后的阵地
2016-05-11 20:03
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
VFP9 代码
UPDATE TEMP SET 调整后数据=TT.NN FROM (SELECT 班级,班级平均数*COUNT(*) /SUM(IIF(REASON=1,0,1)) NN FROM TEMP GROUP BY 班级,班级平均数) TT WHERE temp.班级=tt.班级 and reason!=1
SELECT TEMP
BROWSE

坚守VFP最后的阵地
2016-05-11 20:08
x271942906
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-5-11
得分:0 
我在表里添加了gs字段,全赋为1了
如果我只需要调整 reason=0 和1的记录怎么调整?
就是reason不等于0和1的记录,调整后的值还是平均数的值
如果reason等于1 那么调整后的值就为0
如果reason等于0 那么调整后的值就是  把reason等于1和0的记录求和除以reason等于0的记录条数
temp.rar (655 Bytes)
2016-05-12 10:02
x271942906
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-5-11
得分:0 
回复 12楼 sdta
谢啦,昨天的问题我解决了
今天有新的能帮我看看么?我上传了表格文件
2016-05-12 10:08
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:0 
*如果reason等于0 那么调整后的值就是  把reason等于1和0的记录求和除以reason等于0的记录条数

程序代码:
select 班级,班级平均数*SUM(IIF(reason=0 or reason=1,1,0)) /sum(iif(reason=0,1,0)) 参数 from temp group by 班级 into cursor a1
scan
    update temp set 调整后=a1.参数 where temp.班级=a1.班级 and reason=0
ENDSCAN
sele temp
brow
2016-05-12 10:57
x271942906
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-5-11
得分:0 
回复 15楼 tlliqi
我用的是VFP9.0,运行以后提示缺少group by 子句,或group by 子句无效
2016-05-12 11:05
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:0 
以下是引用x271942906在2016-5-12 11:05:50的发言:

我用的是VFP9.0,运行以后提示缺少group by 子句,或group by 子句无效
程序代码:
SET ENGINEBEHAVIOR 70
select 班级,班级平均数*SUM(IIF(reason=0 or reason=1,1,0)) /sum(iif(reason=0,1,0)) 参数 from temp group by 班级 into cursor a1
scan
    update temp set 调整后=a1.参数 where temp.班级=a1.班级 and reason=0
ENDSCAN
sele temp
brow
2016-05-12 11:26
x271942906
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-5-11
得分:0 
回复 17楼 tlliqi
继续请教,我还漏了一个条件,就是如果某一个班所有记录reason全为1的情况下,调整后还是取原来的平均数,这样的话怎么弄?
最后如果验证的话就是,每一个班的平均数求和与调整数的求和结果是一致的。
2016-05-13 09:19
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:323
帖 子:9621
专家分:26174
注 册:2012-2-5
得分:0 
回复 14楼 x271942906
见CSDN论坛回帖

坚守VFP最后的阵地
2016-05-13 09:48
x271942906
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2016-5-11
得分:0 
回复 19楼 sdta
CSDN后面添加的条件,没有解答
求帮忙
2016-05-13 11:44



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




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

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