我们已收到报告请求,并且我正在尝试找出最简单,最有效的方法来提取数字。
我有一个 Deal 模型,它有两个属性:_quantity_purchased_和 price 。我被要求检索数据库中前100名最畅销的交易列表。为了了解交易的完成情况,我们将quantity_purchased乘以价格。
现在,我确信我可以编写一些令人费解的内容来获得我的结果,但这似乎是一个简单的操作,必须有一种更简单的方法。我可以在MySQL或Ruby / Rails中做些什么吗?或者我发现某种不愉快的循环?
仅供参考,我们正在运行Rails 2.3。
答案 0 :(得分:10)
您可以将:limit
参数传递给find
方法,以限制返回的结果数量。结合:order
参数,您可以获得“最高”的100个结果:
Deal.find(:all, :order => 'quantity_purchased * price', :limit => 100);
从Rails 3开始注意,编写此查询的正确方法是
Deal.order('quantity_purchased * price').limit(100)
答案 1 :(得分:1)
class Deal < ActiveRecord::Base
named_scope :top_deals, :select => 'quantity_purchased * price', :order => '1 DESC', :limit => 100
end
应该这样做。在MySQL中,您可以使用“ORDER BY 1”按选择列表中的第一列进行排序,依此类推。