【发布时间】:2017-01-08 08:11:12
【问题描述】:
我有一个模型Company 和Company 有很多DailyData。
而DailyData 有volume 和date 列
要计算最近 10 个工作日的平均交易量,我写道:
class Array
def sum
inject(0) { |result, el| result + el }
end
def mean
sum.to_d / size
end
end
company = Company.first
company.daily_data.order(date: :desc).limit(10).pluck(:volume).mean
这段代码运行良好,但我想使用 postgres AVG() 函数。
company.daily_data.select('AVG(volume) as average_volume').order(date: :desc)
此代码以错误结束:
PG::GroupingError: ERROR: column "daily_data.date" must appear in the GROUP BY clause or be used in an aggregate function
但是如果我把.group(:date) 放在方法链中,sql 会返回多个结果。
如何使用 postgresql AVG() 函数获取最近 10 卷的平均值?
【问题讨论】:
标签: sql ruby-on-rails ruby postgresql rails-activerecord