从数据库中选择,分组和求和结果

我有一个数据库,其中包含一些我要总结的字段。 但这不是大问题,我想按照它们创建的月份对这些字段进行分组。 ActiveRecord自动创建了一个名为“created_at”的字段。 所以我的问题; 如何按月对结果进行分组,然后对每个月的字段求和?

更新了代码

@hours = Hour.all(:conditions => "user_id = "+ @user.id.to_s, :group => "strftime('%m', created_at)", :order => 'created_at DESC') 

这是我现在的代码。 管理按月分组,但不能总结我的两个字段,“分钟”和“薪水”我需要总结

您可以使用活动记录计算来执行此操作。 一些示例代码可能是

 Model.sum(:column_name, :group => 'MONTH("created_at")') 

显然,有一点需要注意,MONTH是特定于mysql的,所以如果你在SQLite数据库上进行开发,这将无法正常工作。

我不知道您是否使用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之外的其他数据库也有类似的function。

mysql按日期选择sum group

通过使用以下方法修复它:在获取查询时选择,输入手动选择

 @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')