Amb*_*san 5 postgresql activerecord ruby-on-rails ruby-on-rails-4
我一直在尝试每天获得一个布尔列的累积总和.我尝试了不同的方式使用其中任何一个#sum并查看#distinct(通过查看Stack Overflow上的其他帖子)但是无法以我喜欢的哈希方式成功实现这些方法中的任何一个.
目前,这是我的查询:
Device.where(boxed: true).group('date(updated_at)').count
Run Code Online (Sandbox Code Playgroud)
这给了我这个:
{Fri, 17 Apr 2015=>48, Sat, 18 Apr 2015=>44, Sun, 19 Apr 2015=>5, Mon, 20 Apr 2015=>48}
Run Code Online (Sandbox Code Playgroud)
但我希望它看起来像这样:
{Fri, 17 Apr 2015=>48, Sat, 18 Apr 2015=>92, Sun, 19 Apr 2015=>97, Mon, 20 Apr 2015=>145}
Run Code Online (Sandbox Code Playgroud)
我正在使用Rails 4和Postgres.任何帮助,将不胜感激.
编辑:
我最终这样做是为了获得累积总和,尽管这可能不是最好的方式或优雅的:
data_all_time = Device.where(boxed: true).group('date(updated_at)').count
data_all_time_keys = data_all_time.keys
data_all_time_values = data_all_time.values
sum = 0
data_all_time_values.map!{|x| sum += x}
all_time_sum_tuple = data_all_time_keys.zip(data_all_time_values)
Run Code Online (Sandbox Code Playgroud)
我最终得到这样的东西:
[["April 17, 2015", 48], ["April 18, 2015", 92], ["April 19, 2015", 97], ["April 20, 2015", 145]]
Run Code Online (Sandbox Code Playgroud)
这是有效的,直到我能找到更好的方法.
Tan*_*rix -1
查询布尔列每天的累计和:
Device.where(boxed: true).group('date(updated_at)').sum('date(updated_at)')
Run Code Online (Sandbox Code Playgroud)