gpt4 book ai didi

ruby-on-rails - 每天查询 bool 列的累计和

转载 作者:行者123 更新时间:2023-11-29 11:30:00 26 4
gpt4 key购买 nike

我一直在尝试每天获取 bool 列的累计总和。我尝试了使用 #sum 的不同方法,也查找了 #distinct(通过查看 Stack Overflow 上的其他帖子),但都未能成功实现我希望我的哈希看起来像这些方法。

目前,这是我的查询:

Device.where(boxed: true).group('date(updated_at)').count

这给了我这个:

{Fri, 17 Apr 2015=>48, Sat, 18 Apr 2015=>44, Sun, 19 Apr 2015=>5, Mon, 20 Apr 2015=>48}

但我希望它看起来像这样:

{Fri, 17 Apr 2015=>48, Sat, 18 Apr 2015=>92, Sun, 19 Apr 2015=>97, Mon, 20 Apr 2015=>145}

我正在使用 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)

我最终得到这样的结果:

[["April 17, 2015", 48], ["April 18, 2015", 92], ["April 19, 2015", 97], ["April 20, 2015", 145]]

在我想出更好的方法之前,这目前有效。

最佳答案

我会保持你的 sql 不变

data = Device.where(boxed: true).group('date(updated_at)').count

然后在 ruby​​ 中进行自定义聚合

result = {}
keys = []
data.each_with_index do |(key, value), index|
keys << key
result[key] = data.values_at(*keys).sum
end

上面的 ruby 可以稍微清理一下,但是......

另一件需要注意的事情 - 微妙的时区问题

-- your data is probably stored in UTC and this will group by the UTC dates
'date(updated_at)'

根据您的用户查看报告的位置,这可能会或可能不会返回他们期望的计数

关于ruby-on-rails - 每天查询 bool 列的累计和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29753692/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com