Beste Möglichkeit, Datensätze in Rails + Postgres nach beliebigen Zeitintervallen zu zählen

Meine App hat eineEvents Tabelle mit zeitgestempelten Ereignissen.

Ich muss die Anzahl der Ereignisse für jedes der letzten Ereignisse meldenN Zeitintervalle. Für verschiedene Berichte kann das Intervall "jede Woche" oder "jeder Tag" oder "jede Stunde" oder "jedes 15-Minuten-Intervall" sein.

Beispielsweise kann ein Benutzer anzeigen, wie viele Bestellungen er pro Woche, Tag, Stunde oder Viertelstunde erhalten hat.

1) Ich bevorzuge die dynamische Ausführung einer einzelnen SQL-Abfrage (ich verwende Postgres), die nach einem beliebigen Zeitintervall gruppiert wird. Gibt es eine Möglichkeit, das zu tun?

2) Eine einfache, aber hässliche Methode für Brute Force besteht darin, eine einzelne Abfrage für alle Datensätze innerhalb des Start- / End-Zeitrahmens durchzuführen, die nach Zeitstempel sortiert sind.

3) Ein anderer Ansatz wäre, der Ereignistabelle für jedes Intervall separate Felder hinzuzufügen und ein statisches zu speichernthe_week the_day, the_hour, undthe_quarter_hour Ich nehme also den "Treffer" zum Zeitpunkt der Erstellung des Datensatzes (einmalig), anstatt jedes Mal, wenn ich über dieses Feld berichte.

Was ist hier die beste Vorgehensweise, wenn ich das Modell ändern und die Intervalldaten vorab speichern kann, wenn dies erforderlich ist (allerdings auf Kosten der Verdoppelung der Tabellenbreite)?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage