使用Rails检索"top x"记录的最有效方法

Kev*_*ker 6 ruby mysql ruby-on-rails

我们已收到报告请求,并且我正在尝试找出最简单,最有效的方法来提取数字.

我有一个 具有两个属性的Deal模型:_quantity_purchased_和price.我被要求检索数据库中前100名最畅销的交易列表.为了了解交易的完成情况,我们将price_purchased乘以价格.

现在,我确信我可以编写一些令人费解的东西来获得我的结果,但这似乎是一个简单的操作,必须有一种更简单的方法.我可以在MySQL或Ruby/Rails中做些什么吗?或者我发现某种不愉快的循环?

仅供参考,我们正在运行Rails 2.3.

mea*_*gar 10

您可以将:limit参数传递给find方法以限制返回的结果数.结合:order参数,您可以得到'前100'的结果:

Deal.find(:all, :order => 'quantity_purchased * price', :limit => 100);
Run Code Online (Sandbox Code Playgroud)

请注意,从Rails 3开始,编写此查询的正确方法是

Deal.order('quantity_purchased * price').limit(100)
Run Code Online (Sandbox Code Playgroud)