草庐IT

subset-sum

全部标签

sql - 对多个父记录的子项属性进行 SUM 运算

我的产品模型中有这个方法可以满足我的需要:defself.availableavailable=[]Product.all.eachdo|product|ifproduct.quantity>product.sales.sum(:quantity)available但是,我想知道是否有更有效的方法来做到这一点,也许只需要调用一次数据库。 最佳答案 你可以试试:Product.where("products.quantity>Coalesce((selectsum(s.quantity)fromsalesswheres.product

ruby 1.8.7 : group_by with sum in an enumerable type

我有一个按以下结构排列的记录数组:[{"some_id"=>2,"some_total=>250},{"some_id"=>2,"some_total"=>100},{"some_id"=>3,"some_total"=>50},{"some_id"=>3,"some_total"=>50},{"some_id"=>3,"some_total"=>25},{"some_id"=>1,"some_total"=>10}]使用Ruby的group_by/inject/sum或Enumerable可用的任何方法的最佳方法是什么,以使其返回有序的哈希数组,其中每个哈希由“some_id”键控,

ruby-on-rails - 每个循环 : show item once and sum quantity

我目前正在使用这段代码循环查看特定日期的已订购商品ItemQuantity目前,如果商品1被多次订购,它会在列表中出现多次。我只想让它出现一次,旁边有一个数字来显示订购的数量。例如,如果item_1在demand_1中的数量为5,item_1在demand_2中的数量为10,则结果应为:item_1....15谢谢! 最佳答案 应该这样做:ItemQuantity希望这对您有所帮助!一些解释:@demand.flat_map(&:demand_items)#equivalent:(longversion)@demand.map{|d

sql - rails : Group and sum while adding last values (Fibonacci)

我正在尝试对每个月的报价总和进行分组,同时添加最后的总和。例如:Jan:300€Fev:200€Mars:100€组应该返回的是:Jan:300€Fev:500€(200+Jan's300)Mars:600€(100+Fev's500)当前SQL:current_user.quotes.group_by_month(:created_at,last:12).sum(:price)我正在使用groupdategem。谢谢。 最佳答案 如果使用postgresql,你可以使用windows函数UNBOUNDEDPRECEDING第一行,

ruby-on-rails - 来自 group(..).sum(..) 的 Rails 排序结果

我正在使用Rails并绘制一些数据。我使用以下内容:如何让这个组命令按分数从高到低对返回的数组进行排序?我的模型排列如下classUser 最佳答案 你的score是Level还是User?好的,它们处于更深层次的嵌套关系中。如果您的User模型声明:,您可以让您的生活更轻松:classUser然后你必须加入关卡。查看ActiveRecord生成的SQL可以看出User.joins(:levels).group(:email).sum(:score)生成SELECTsum(score)ASsum_score,emailFROMuse

ruby - 定义方法 `sum_to_n?`

我有下面的代码。方法sum_to_n?接受一个整数数组arr和一个整数n作为参数,如果有任何两个元素则返回truearr总和为n。对于n为零的空arr,它应该返回true,但一直返回false。defsum_to_n?(arr,n)hash=Hash.new(0)arr.eachdo|val|ifhash.key?valreturntrueelsehash[n-val]=valendendreturnfalseend我做错了什么? 最佳答案 较短的版本:defsum_to_n?(arr,n)(arr.empty?&&n.zero?)

ruby - 如何在 Ruby 中处理 'reverse sum'?

我不知道如何用正确的数学术语来调用它。考虑一种采用两位数的方法:defnum_of_sum(total,group_count)end其中total是一个整数,group_count是一个整数。我如何得到一个长度为group_count的整数“很好地”分组数组,总计到total。我的规范看起来像:describe"numbertosumof"doit"grabsallnumbers"doexpect(num_of_sum(10,2)).toeq([5,5])expect(num_of_sum(10,3)).toeq([3,3,4])expect(num_of_sum(20,3)).to

ruby - 内部舍入问题 : accurate way to sum Ruby floating point numbers?

这当然是坏的:(0.1+0.1+0.1)=>0.30000000000000004(0.1+0.1+0.1)==0.3#false我不需要完美的总和,只要足以说明两个float具有相同的值即可。我能想到的最好办法是将等式两边相乘并四舍五入。这是最好的方法吗?((0.1+0.1+0.1)*1000).round==(0.3*1000).round更新:我卡在了Rubyv1.8.7上。 最佳答案 准确求和和有效比较是有区别的。你说你想要前者,但看起来你想要后者。底层的Rubyfloat算法是IEEE的,并且具有最小化累积误差的合理语义,

ruby - 安全地将 `sum` 方法添加到 Array 类

我在我的代码中做了很多数组求和,所以我正在考虑对Array类进行猴子修补以包含一个sum方法(对数组中的所有元素求和):classArraydefsumself.inject{|s,t|s+t}endend但是,我以前从来没有在共享代码中修补过任何东西,我怀疑这是一个“安全”的事情(例如,也许其他人已经定义了一个sum方法在数组中)。那么,什么是能够在我编写的代码中对数组求和的最佳方法,而无需编写arr.inject{|s,t|s+t}每次?有猴子补丁的安全方法吗?我能以某种方式使用模块吗?或者我应该在某个地方写一个辅助方法,它接受一个数组并返回总和(即defsum_array(arr

ruby-on-rails - 将聚合函数 SUM 与 GROUP BY 一起应用

在ActiveRecord/RubyonRails中执行此查询的最佳方式是什么SELECTsum(amount)作为total_amountFROMpaymentsGROUPBYperson_id,product_id我似乎无法将sum与group方法链接起来。我必须在这里求助于find_by_sql吗? 最佳答案 类似于:Payment.group(:person_id).group(:product_id).sum(:amount)应该给你一个散列,其键是[person_id,product_id]数组,其值是总和。您可能不想: