2010-02-17 104 views
0

目前,我有以下查询Ruby on Rails的查询帮助

User.sum(:experience, :group => "clan", :conditions => ["created_at >= ? and created_at <= ?", "2010-02-15", "2010-02-16"]) 

我想从最丰富的经验,以最少的经验,只有在经历了前50回上市的经验而言重返前50的氏族。我将如何修改查询来实现该结果。我知道我需要:limit => 50来限制查询,但是如果我添加:order =>“clan DESC”,我得到错误列“users.experience”必须出现在GROUP BY子句中或用于聚合功能

+1

中,好像你是聚集用户找到最有经验下令至少每个战队的整体体验。那是对的吗? 如果您希望用户使用求和方法并非您想要的,那么确切说明“结果”的含义可能会有所帮助。 – 2010-02-17 04:55:02

+0

tomtoday - 这是正确的,我已经更新了原来的问题,以反映这一点。我应该用什么来取代.sum? – Splashlin 2010-02-17 05:26:08

回答

0

您需要重复计算基础上的ActiveRecord查询订单条款

User.sum(:experience, :group => "clan", :order=> "sum(experience) DESC", :limit => 50, :conditions => ["created_at >= ? and created_at <= ?", "2010-02-15", "2010-02-16"]) 
+0

这是行不通的?我试图确保我的逻辑没有错误... – naven87 2010-02-27 03:17:14