我要做的是取一个值,按小时分组,然后在每小时将这个小时的平均值分成这样一个数组。
[ 'hour1average', 'hour2average']
目前我所拥有的是(在这个特定情况下,> 1天非常重要,但知道如何实现这一目标会很好。)
代码snippit
@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 %>
如果可能的话,我也有兴趣了解如何获得每个分组小时的最小/最大值?
答案 0 :(得分:1)
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将包含每小时发现的集市平均值。