计算每天的记录数

问题描述:

我有用户注册。我想根据created_at记录计算每天的记录数

显示过去7天的每日注册数量的图表我可以使用活动记录查询来实现这种分组和计数而不是手动计算通过迭代?

使用to_date这将摆脱所有的时间信息,有效地让你只用几天。

User.where('created_at >= ?', 1.week.ago).group_by { |u| u.created_at.to_date }.map { |_,v| [_, v.length]}.to_h

,或者,如果你不计较时间部分,你可以这样做:

User.where('created_at >= ?', 1.week.ago).group(:created_at).count

这将让你与created_atcount哈希值。

+0

有没有一种方法可以得到计数? –

+0

'{2016-08-19 13:59:39 UTC => 1,2016-08-19 07:30:24 UTC => 1,2016-08-22 12:37:51 UTC => 1,2016- 08-19 07:23:36 UTC => 1,2016-08-24 08:04:54 UTC => 1}'看起来好像需要时间基础。任何方式,我可以得到它只是基于日期。我正在使用第二个查询 –

+1

对于大量记录来说,这当然是最快的解决方案,因为分组是在SQL中完成的,而不是取出所有记录,然后在ruby中进行分组。 –