Можно ли сгруппировать по часам / минутам / четвертям часа непосредственно в ActiveRecord / Rails? - PullRequest
3 голосов
/ 16 августа 2010

Я хочу сгруппировать свои данные по часам / дням, возможно, даже за четверть часа.

Могу ли я сделать это непосредственно в ActiveRecord или мне нужно просто собрать все данные и выполнить агрегацию вручную?

Table "Checkin":
  Time    NumBikes ChangeBikes
  09:00   5         5
  09:05   6         1
  09:10   10        4
  10:00   6         4
  10:05   8         2
  10:10   16        8

Looking to get something like:
  Time   Sum(ChangeBikes) 
  09:00   10
  10:00   14

Заранее спасибо, Крис.

Ответы [ 2 ]

2 голосов
/ 24 июля 2012

Если вам не нужен четверть часа или как альтернатива этому (с некоторой работой) (и Крис, возможно, обнаружил это уже с давних времен), вы можете попробовать подробный ответ здесь .

Суть в том, что вы можете группировать по отдельному элементу времени - например, group(hour(date_time_field) - или по формату даты:

CheckIn.group("date_format(created_at, '%Y%m%d %H/%M')").count

Если вы хотите добавить в кварталчас вы можете попробовать это и затем добавить в форматирование

0 голосов
/ 09 ноября 2010

Решение, которое я выбрал, состояло в том, чтобы создать дополнительные столбцы в таблице для периодов времени, которые я хочу.Для приведенного выше примера я бы добавил столбец Time_Hour со временем, округленным до соответствующего часа.Затем я мог бы сделать группировку / анализ по этому столбцу, чтобы получить статистику по часам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...