以下是我的两个模型:
class Account < ActiveRecord::Base
has_many :values
end
class Value < ActiveRecord::Base
belongs_to :account
end
在我的帐户模型上,我有一个:name属性和一个:type属性,我选择'checking'或'savings'。每年的每个季度,我都会为每个账户记录一笔金额,这是价值模型。值模型有一个:quarter属性(1、2、3或4)、一个:year属性和一个:amount属性。有些账户每季度都会更新一次,有些则不会。例如,我可以有一个支票账户,它有2010年第1、2、3和第4季度的值,然后另一个支票账户只有第1和第2季度的值。每次输入一个季度,它只是上一个季度的更新,而不是一个累计总数。
我想要做的是运行一个查询,该查询将显示我去年特定帐户类型的平均帐户值,'支票'或'储蓄'。我正在努力解决的问题是,我不能只运行查询并合计全年,因为只有最后输入的值(按:quarter和:year排序)才是实际值,而不是所有季度的总和。那么,我如何循环遍历所有的"支票"账户,并从最近输入的价值条目中提取金额,无论是第一季度还是第四季度?
我将使用value
记录的created_at时间戳来排序结果。听起来您想要给定范围内的最新值记录。如果您不能按日期排序结果,您可以简单地按:quarter DESC
排序并使用第一个结果吗?
不要忘记在SQL server端使用AVG()函数:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_avg
也可以查看http://ar.rubyonrails.org/classes/ActiveRecord/Calculations/ClassMethods.html