我有兩個屬性,我試圖平均,但它只是平均第二個字段在這裏。有沒有辦法做到這一點?Ruby Rails在返回多個對象的查詢中的平均兩個屬性
e = TiEntry.where('ext_trlid = ? AND mat_pidtc = ?', a.trlid, a.pidtc).average(:mat_mppss_rprcp && :mat_fppss_rprcp)
我有兩個屬性,我試圖平均,但它只是平均第二個字段在這裏。有沒有辦法做到這一點?Ruby Rails在返回多個對象的查詢中的平均兩個屬性
e = TiEntry.where('ext_trlid = ? AND mat_pidtc = ?', a.trlid, a.pidtc).average(:mat_mppss_rprcp && :mat_fppss_rprcp)
我相信你們都準備好看着http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html#method-i-average
但你不能得到的兩件事情的平均值。
你能做什麼不能重複你的查詢是:
entries = TiEntry.where('ext_trlid = ? AND mat_pidtc = ?', a.trlid, a.pidtc)
average_mppss = entries.average(:mat_mppss_rprcp)
average_fppss = entries.average(:mat_fppss_rprcp)
這樣只會執行查詢一次
我希望這對你的作品
e = TiEntry.where('ext_trlid = ? AND mat_pidtc = ?', a.trlid, a.pidtc).select("AVG(mat_mppss_rprcp) AS avg1, AVG(mat_fppss_rprcp) AS avg2").map { |i| [i.avg1, i.avg2] }
這是爲你工作?它可以像平均方法那樣工作,但是您可以根據需要支持可能的值
這與此處的其他查詢之間的優點是僅使用一個簡單的SQL查詢。其他人使用SQL獲取表中的所有內容(如果表很大,可能需要一些時間),然後計算紅寶石語言的平均值