2010-02-17 101 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