Sql Rails按时间间隔分组

Sql Rails按时间间隔分组,sql,ruby-on-rails,ruby,activerecord,Sql,Ruby On Rails,Ruby,Activerecord,在没有ruby的情况下,如何在sql或arel/activerecord上实现这一点 活动计划: integer "action" [0,1,2] string "name" float "price" datetime "created_at" datetime "updated_at" 模型方法: # interval maybe "2 hour", "1 hour", "15 minutes" etc. def self.statistics(start_time,

在没有ruby的情况下,如何在sql或arel/activerecord上实现这一点

活动计划:

integer  "action" [0,1,2]
string   "name"
float    "price"
datetime "created_at"
datetime "updated_at"
模型方法:

  # interval maybe "2 hour", "1 hour", "15 minutes" etc.
  def self.statistics(start_time, end_time, interval)
    stats = Event.where(created_at: start_time..end_time).group_by do |e|
      end_time - ((end_time - e.created_at).to_i / interval.to_f).floor * interval
    end.map do |k, e|
      gb = e.group_by {|e| e.action}
      [k,
        {
          profit: e.reduce(0) {|m, e| m += e.price},
          actions: (0..2).map {|v| gb.has_key?(v) ? gb[v].count : 0}
        }
      ]
    end.to_h

    stats
  end
输出:

{2015-10-12 11:00:00 +0300=>{:profit=>14685.0, :actions=>[86, 92, 105]},...}
你怎么能做什么?你有什么输入,你想要什么输出?试试这个