我的开发环境(SQLite)中有一个功能正常的方法,它看起来像这样:
def self.ytd
Production.find(
:all,
conditions: ["year == ?", Time.now.year],
select: "carrier_id, amount, SUM(amount) as sum_amount",
group: :carrier_id
)
end
此方法成功搜索包含:carrier_id
和:amount
列的表格。然后,它会根据分组的:amount
:carrier_id
列进行求和
我正在尝试使用Postgresql转换为生产环境。以下代码成功地对记录进行分组,但我无法对:amount
求和。我已经尝试修改.sum("productions.amount")
方法而没有成功。我确信有一个简单的解决方案,但它暗示了我......有人可以帮忙吗?感谢
def self.ytd
Production.select("DISTINCT ON (productions.carrier_id) productions.carrier_id, productions.amount ")
.where("productions.year = (?)", "#{Time.now.year}")
.group("productions.amount, productions.carrier_id, productions.id")
end
答案 0 :(得分:1)
已移除DISTINCT ON
,已添加SUM(amount) as sum_amount
并已在:carrier_id
上分组,产生了所需的结果。
def self.ytd
Production.select("productions.carrier_id, SUM(amount) as sum_amount")
.where("productions.year = (?)", "#{Time.now.year}")
.group("productions.carrier_id")
end