获取子项总和(数量)小于父项(也是数量)的所有记录

时间:2015-11-17 17:58:05

标签: ruby-on-rails ruby activerecord

我正在努力获得产品销售数量总和少于产品数量的所有产品。

这就是我的尝试:

test_acc[it // test_interval] = correct / (100.0 * batch_size)

但这给了我class Product < ActiveRecord::Base has_many :sales scope :available, lambda { where(sales.sum(:quantity) < quantity)} end 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:5)

表中特定字段的sum是通过在SQL语句中对所需的行进行分组然后对其应用聚合函数来获得的。

您的具体问题可能同样在ActiveRecord中翻译:

Product.joins(:sales).
        group("sales.product_id").
        having("sum(sales.quantity) < sum(products.quantity)").
        select("products.*")

您必须在此使用having,因为where不适用于汇总功能(又名sumcountavg等)