Rails-按小时分组-取单个字段的平均值



我想做的是取一个值,按小时分组,然后在每个小时内将该小时的平均值放入这样的数组中。

["小时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将包含每小时发现的集市的平均值。

最新更新