Najlepszy sposób na zliczanie rekordów w dowolnych odstępach czasu w Rails + Postgres

Moja aplikacja maEvents tabela ze zdarzeniami ze znacznikami czasu.

Muszę zgłosić liczbę zdarzeń podczas każdej z ostatnichN Interwały czasowe. W przypadku różnych raportów interwał może być „co tydzień” lub „każdego dnia” lub „co godzinę” lub „co 15 minut”.

Na przykład użytkownik może wyświetlić liczbę zamówień otrzymanych w każdym tygodniu, dniu lub godzinie lub ćwierć godziny.

1) Moja preferencja polega na dynamicznym wykonywaniu pojedynczego zapytania SQL (używam Postgres), które grupuje według dowolnego przedziału czasu. Czy istnieje sposób, aby to zrobić?

2) Łatwym, ale brzydkim, brutalnym sposobem jest wykonanie pojedynczego zapytania dla wszystkich rekordów w przedziale czasu początkowym / końcowym posortowanym według datownika, a następnie metoda ręcznego budowania tala bez względu na interwał.

3) Innym podejściem byłoby dodanie oddzielnych pól do tabeli zdarzeń dla każdego przedziału i statyczne przechowywaniethe_week the_day, the_hour, ithe_quarter_hour pole, więc biorę „trafienie” w momencie tworzenia rekordu (raz) zamiast za każdym razem, gdy raportuję na tym polu.

Jaka jest najlepsza praktyka, biorąc pod uwagę, że mogę zmodyfikować model i dane interwału przed zapisem, jeśli jest to wymagane (choć przy niewielkim koszcie podwojenia szerokości tabeli)?

questionAnswers(1)

yourAnswerToTheQuestion