我已尽力将代码精简到最低限度,并提供了有关问题的简洁说明(希望如此)
我有一个如下所示的数据库方案。
def a_method(info_hash)
...
db.execute2 "create table if not exists Table1(Id INTEGER PRIMARY KEY, Item TEXT, Amount FLOAT, Type TEXT, AvgInc FLOAT, AvgX FLOAT, Total FLOAT)"
...
end
这将创建我的架构。填充数据库后,我将运行以下方法,该方法为我的#{@total}
列分组的Type
值:
def get_total(info_hash)
...
get_amt = db.execute2 "SELECT sum(Amount) from Table1 WHERE Type = :Type", info_hash[:category]
puts "foo"
db.execute2 "UPDATE Table1 SET Total = :Total WHERE Type = :Type", get_amt[1][0], info_hash[:category]
@total=get_amt[1][0]
...
@total
end
如果项目不存在,我想运行以下方法来计算Item
平均值。基本上每个Item
对Type
平均值的影响。
请查看代码中的注释,以了解我认为我的逻辑错误的地方
def method_excluding(info_hash)
...
get_num = db.execute2 "SELECT Amount from Table1 WHERE Type = :Type", info_hash[:category]
i = 0
get_num.each do |item|
#purpose of block to compute an average value for Type as if #{item} did not exist. So: the average value for Type EXLCUDING #{item}
if i == 1
@avgx = (@total - get_num[1][0]) / i
elsif i > 1
@avgx = (@total - get_num[i][0]) / (i - 1)
end
i+=1
db.execute2 "UPDATE Table1 SET AvgX = :AvgX WHERE Type = :Type", @avgx, info_hash[:category]
...
end
请告知我如何获得理想的结果。