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