【发布时间】:2015-12-08 02:17:57
【问题描述】:
我可以像这样按每个月的用户数对用户进行分组:
User.group('year(created_at)').group('month(created_at)').count
#=> {[2015, 4]=>90, [2015, 5]=>133, [2015, 6]=>131, [2015, 7]=>28, [2015, 8]=>45, [2015, 9]=>6}
我想创建统计数据,显示用户数是如何按月增长的。
所以它会返回如下内容:
{[2015, 4]=>20, [2015, 5]=>40, [2015, 6]=>55, [2015, 7]=>70, [2015, 8]=>100, [2015, 9]=>130}
# each entry is a year, month and total users count from the beginning of time by the end of this month.
我怎样才能得到想要的结果?
如果可能,我正在寻找数据库级解决方案(ActiveRecord 查询)。
欢迎提出任何建议。
【问题讨论】:
-
请编辑解释
[2015,4]=>20和[2015,5]=>40是如何计算的。将变量分配给输入哈希(例如,h = User.group(....)也很有帮助,这样给出答案的人就可以引用该变量而无需定义它。 -
@CarySwoveland 正如我在期望输出的评论中提到的,
[2015,4]=>20表示在 2015 年的第 4 个月(应用程序存在的开始)有 20 个用户在应用程序中注册,[2015,5]=>40意思是,从时间开始(2015 年第 4 个月)到第 5 个月末有 40 个用户注册,[2015, 6]=>55表示,从时间开始到 2015 年第 6 个月末有 55 个用户注册等等,所以我有应用程序中用户数的指数统计,按月计算。 -
安德烈,这就是我想的(按月累积用户),但我不知道所需输出的值来自哪里。例如,您是如何从
90获得20的?另外,我不知道标题中的“指数”是什么意思,也不知道为什么所需输出中的所有值都是5的倍数(如果不是巧合的话)。 -
要操作的集合是
User::ActiveRecord_Relation。恐怕我无法为您提供全部收藏。编辑了关于5的倍数的累积标题(我正在寻找的词,谢谢!) - 巧合:)
标签: mysql ruby-on-rails ruby database grouping