我想根據模型中的第二個變量計算我模型中某個變量的加權平均值,並且無法通過ActiveRecord找到一種方法。在聚合函數之前對ActiveRecord對象執行行操作
class Employer < ActiveRecord::Base
attr_accessible :name, :number_of_employees, :average_age
def self.wt_avg_age
#return sum(number_of_employee * average_age)/sum(number_of_employees)
end
end
在直SQL,我會用:
SELECT id, SUM(number_of_employees*average_age)/SUM(number_of_employees)
FROM employer
GROUP BY name
我可以在一個雄辯的方式(即執行像這樣的一個ActiveRecord關係,沒有拉下獨立陣列和迭代通過每一個記錄得到我的分子)?我嘗試過使用.select(),.pluck()和sum()沒有任何運氣的不同組合。我無法讓ActiveRecord對象執行sumproduct。
爲什麼你要使用的對象模型,其中簡單sql查詢會做什麼?爲這項工作使用正確的工具。 –
'id'是唯一的。如果你用'id'進行分組,你就不會完成任何事情 - 它相當於'SELECT number_of_employees * average_age/number_of_employees FROM employer'。或許還有別的東西可以分組,或者這應該是單排結果? – PinnyM
我編造了這個例子,所以我忽略了這個。我現在正在按名稱分組。我應該爲每個名字返回一個記錄。 – RedRobin2202