我正在努力获得产品销售数量总和少于产品数量的所有产品。
这就是我的尝试:
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
我该如何解决这个问题?
答案 0 :(得分:5)
表中特定字段的sum
是通过在SQL语句中对所需的行进行分组然后对其应用聚合函数来获得的。
您的具体问题可能同样在ActiveRecord中翻译:
Product.joins(:sales).
group("sales.product_id").
having("sum(sales.quantity) < sum(products.quantity)").
select("products.*")
您必须在此使用having
,因为where
不适用于汇总功能(又名sum
,count
,avg
等)