gpt4 book ai didi

ruby-on-rails - 在聚合函数之前对 ActiveRecord 对象执行行操作

转载 作者:太空宇宙 更新时间:2023-11-03 16:06:14 24 4
gpt4 key购买 nike

我正在尝试根据模型中的第二个变量计算模型中变量的加权平均值,但我无法找到通过 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

我能否以 Eloquent 方式在 ActiveRecord 关系上执行类似的操作(即,无需拉下单独的数组并遍历每条记录以获取我的分子)?我尝试过使用 .select()、.pluck() 和 sum() 的不同组合,但都没有成功。我在让 ActiveRecord 对象执行 sumproduct 时遇到问题。

最佳答案

您应该能够执行以下操作:

Employer.select("name, (SUM(number_of_employees*average_age)/SUM(number_of_employees)) as sum").group(:name)

这会将 Employer 实例返回给您,但它们将只有 .name 和 .sum 属性。这将运行您想要的确切 SQL 查询。

关于ruby-on-rails - 在聚合函数之前对 ActiveRecord 对象执行行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13368389/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com