Лучший способ подсчета записей по произвольным временным интервалам в Rails + Postgres

Мое приложение имеетEvents таблица с отметками времени событий.

Мне нужно сообщить количество событий во время каждого из последнихN временные интервалы. Для разных отчетов интервалом может быть «каждая неделя» или «каждый день» или «каждый час» или «каждый 15-минутный интервал».

Например, пользователь может отобразить, сколько заказов он получил каждую неделю, день, час или четверть часа.

1) Я предпочитаю динамически выполнять один SQL-запрос (я использую Postgres), который группируется с произвольным интервалом времени. Есть ли способ сделать это?

2) Простой, но уродливый метод грубой силы состоит в том, чтобы сделать один запрос для всех записей в пределах начального / конечного таймфрейма, отсортированных по метке времени, а затем создать метод подсчета вручную для любого интервала.

3) Другой подход заключается в добавлении отдельных полей в таблицу событий для каждого интервала и статическом храненииthe_week the_day, the_hou,r, а такжеthe_quarter_hour поле, поэтому я беру «удар» в момент создания записи (один раз), а не каждый раз, когда я сообщаю об этом поле.

Какова лучшая практика здесь, учитывая, что я мог бы изменить модель и предварительно сохранить интервальные данные, если это необходимо (хотя и за небольшую цену удвоения ширины таблицы)?

Ответы на вопрос(1)

Ваш ответ на вопрос