是否可以直接在ActiveRecord / Rails中按小时/分钟/小时分组?

时间:2010-08-16 08:38:36

标签: ruby-on-rails activerecord

我希望按小时/天分组我的数据,甚至可能分到四分之一小时。

我可以直接在ActiveRecord中执行此操作,还是应该抓取所有数据并手动执行聚合?

Table "Checkin":
  Time    NumBikes ChangeBikes
  09:00   5         5
  09:05   6         1
  09:10   10        4
  10:00   6         4
  10:05   8         2
  10:10   16        8

Looking to get something like:
  Time   Sum(ChangeBikes) 
  09:00   10
  10:00   14

先谢谢你,克里斯。

2 个答案:

答案 0 :(得分:2)

如果您不需要四分之一小时或作为替代方案(有一些工作)(并且Chris可能已经很久以前就已经发现了这一点),您可以尝试详细解答here。< / p>

要点是你可以按个别时间元素分组 - 例如group(hour(date_time_field) - 或日期格式:

CheckIn.group("date_format(created_at, '%Y%m%d %H/%M')").count

如果您想在季度小时内添加,可以尝试this,然后添加格式

答案 1 :(得分:0)

我选择的解决方案是在桌子上创建我追踪的时间段的其他列。对于上面的示例,我将添加一个Time_Hour列,其时间向下舍入到适当的小时。然后,我可以对该列进行分组/分析,以便按小时获取统计数据。