我有一个数据库,其中包含一些我要总结的字段。但这不是大问题,我想按照它们创建的月份对这些字段进行分组。 ActiveRecord自动创建了一个名为“created_at”的字段。所以我的问题;如何按月对结果进行分组,然后对每个月的字段求和?
已更新为代码
@hours = Hour.all(:conditions => "user_id = "+ @user.id.to_s,
:group => "strftime('%m', created_at)",
:order => 'created_at DESC')
这是我现在的代码。管理按月分组,但无法总结我的两个字段,“分钟”和“薪水”,我需要总结
答案 0 :(得分:2)
您可以使用active record calculations执行此操作。一些示例代码可能是
Model.sum(:column_name, :group => 'MONTH("created_at")')
显然,有一点需要注意,MONTH是特定于mysql的,所以如果你在SQLite数据库上进行开发,这将不起作用。
答案 1 :(得分:1)
我不知道您是否使用SQL查询来执行此操作(不更改当前的表结构)。但是,您可以使用一些代码行。
records = Tasks.find(:conditions => {..})
month_groups = records.group_by{|r| r.created_at.month}
month_groups.each do |month, records|
sum stuff.. blah blah blah..
end
我在这个问题的右侧看到了这个链接。我假设除了MySQL之外的其他数据库也有类似的功能。
答案 2 :(得分:1)
通过使用以下方法修复:获取查询时选择,输入手动选择
@hours = Hour.all(:conditions => "user_id = "+ @user.id.to_s,
:select => "created_at, SUM(time) time",
:group => "strftime('%m', created_at)",
:order => 'created_at DESC')