有一個Company
有很多DailyDatum
。 DailyDatum
有date
和volume
列。如何獲得最近的n項平均積極記錄
class Company < ActiveRecord::Base
has_many :daily_data
end
我想要得到最近的10個volumes
的平均值。通過這個代碼我得到的平均值。(我實現Array#mean
法)
company = Company.first
company.daily_data.order(date: :desc).limit(10).pluck(:volume).mean
而且我認爲它更efficiant如果我使用Postgresql
AVG
功能。但不知何故order
被這樣忽略。
company.daily_data.order(date: :desc).limit(10).average(:volume)
(15.7ms) SELECT AVG("daily_data"."volume") FROM "daily_data" WHERE "daily_data"."company_id" = $1 LIMIT 10 [["company_id", 1123]]
我可以使用limit
,order
,average
在同一時間?
無論您是否按日期訂購它都沒關係,因爲它總是一行。 –
通過id對desc進行排序隨着記錄數量的增加,它是一個更高效的索引。 – s1mpl3