我想做的是取一个值,按小时分组,然后在每个小时内将该小时的平均值放入这样的数组中。
["小时1平均值","小时2平均值"]
我目前的情况如下(在这种特定情况下,>1天很重要,但最好知道如何实现这一点)。
代码狙击
@item.tickers.where("created_at > :day_ago",{day_ago: 1.day.ago}).pluck(:bazaar)
上下文
<%= content_tag :div, id: "last24", class: "last24", data: {item: @item.name.to_s, prices: @item.tickers.where("created_at > :day_ago",{day_ago: 1.day.ago}).pluck(:bazaar), when: @item.tickers.where("created_at > :day_ago",{day_ago: 1.day.ago}).pluck(:created_at)} do %>
<% end %>
如果可能的话,我也想看看如何获得每个分组小时的最小/最大值?
hour_group = @item.tickers.where("created_at > :day_ago",{day_ago: 1.day.ago}).group_by {|ticker| ticker.created_at.hour}
这会给你一个像一样的散列
{
1 => ['Array of items with hour=1'],
2 => ['Array of items with hour=2']
}
你想要哪个字段的平均值?还是只计算每个小时组中的项目?
返回每小时中的项目数数组
group_average_array = [0]*24
hour_group.each_pair do |idx, arr|
group_average_array[idx] = (arr.map(&:bazaar).sum)/arr.size
end
group_average_array将包含每小时发现的集市的平均值。