Rails - 按小时分组 - 取单场平均值

时间:2013-11-21 09:20:01

标签: ruby-on-rails

我要做的是取一个值,按小时分组,然后在每小时将这个小时的平均值分成这样一个数组。

[ '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 %>

如果可能的话,我也有兴趣了解如何获得每个分组小时的最小/最大值?

1 个答案:

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

相关问题