我在一個rails項目上工作了一段時間,我遇到了(我認爲是)一個小問題。PostgreSQL上的活動記錄加入分組查詢
爲簡單起見,我有3個模式是這樣的:
class House < ActiveRecord::Base
has_many :house_style_relationships
end
class HouseStyleRelationship < ActiveRecord::Base
attr_accessible :percentage
belongs_to :style
belongs_to :house
end
class Style < ActiveRecord::Base
has_many :house_style_relationships
end
所以HouseStyleRelationship模型只是讓我們知道一個家的風格百分比。例如,一座房子可以是70%的現代和30%的經典。
我需要做的是獲得所有房屋的每種風格的平均值。 要做到這一點我使用的SQLite在這方面的工作查詢:
houses_count = Houses.count
HouseStyleRelationship.joins(:style).select("style.name, SUM(house_style_relationships.percentage)/#{houses_count} as percentage").group("styles.id")
但是,當我決定推動在Heroku所有這些東西,我有一個問題在PostgreSQL。 事實上,要創建一個HouseStyleRelationship對象(我甚至不需要),ActiveRecord會要求一個HouseStyleRelationship.id,它會使Group By崩潰(使用查詢)。 (PostgreSQL不希望用不同的ID對記錄進行分組)
您是否有解決方案阻止ActiveRecord生成模型實例作爲答案並從查詢中刪除HouseStyleRelationship.id? (我不能使用SELECT DISTINCT,因爲我需要SUM()計算)
在此先感謝!
感謝您的詳細問題。將來,請嘗試包含您的PostgreSQL版本以及您獲得的任何錯誤消息的確切文本。 – 2012-08-16 00:16:59