Как агрегировать данные модели activerecord за определенный период времени? - PullRequest
1 голос
/ 14 мая 2010

Я собираю данные из системы каждые ~ 10 секунд (эта разница во времени зависит от времени связи с сетевыми устройствами). Я хотел бы рассчитывать средние и суммы хранимых значений для этой модели activerecord на ежедневной основе. Все записи хранятся в UTC.

Как правильно суммировать и усреднять значения, например, за предыдущий день с полуночи до полуночи EST? Я могу сделать это в SQL, но не знаю, как "рельсовый путь", чтобы сделать этот расчет.

1 Ответ

4 голосов
/ 14 мая 2010

Попробуйте это:

tz = ActiveSupport::TimeZone.new("Eastern Time (US & Canada)")
range = 1.day.ago(tz.now).beginning_of_day..1.day.ago(tz.now).end_of_day
total = Model.sum(:column, :conditions => {created_at >= range})
...