В моем приложении есть таблица Events с событиями с меткой времени.
Мне нужно сообщить количество событий во время каждого из последних временных интервалов N. Для разных отчетов интервал может быть "каждую неделю" или "каждый день" или "каждый час" или "каждый 15-минутный интервал".
Например, пользователь может отображать, сколько заказов они получали каждую неделю, день или час или четверть часа.
1) Мое предпочтение заключается в динамическом выполнении одного SQL-запроса (я использую Postgres), который группирует на произвольный временной интервал. Есть ли способ сделать это?
2) Легкий, но уродливый способ грубой силы - сделать один запрос для всех записей в таймфрейме времени начала/конца, отсортированного по метке времени, а затем создать метод вручную, построив подсчет любого интервала.
3) Другим подходом было бы добавление отдельных полей в таблицу событий для каждого интервала и статическое сохранение полей the_week the_day, the_hour и the_quarter_hour, поэтому я принимаю "удар" во время запись создается (один раз), а не каждый раз, когда я сообщаю об этом поле.
Какая лучшая практика здесь, учитывая, что я мог бы модифицировать модель и предварительно хранить данные интервалов, если это необходимо (хотя при скромных затратах удвоения ширины таблицы)?