Benutzerstatistiken mit korrektem Zeitstempel

Hey,

ich habe eine Discourse-SQL-Datenbank. Ich muss Benutzerstatistiken für einen bestimmten Zeitstempel ermitteln.
Zum Beispiel: Wie viele Beiträge hat ein Benutzer verfasst?
Wenn ich diese Daten aus user_stats extrahiere, erhalte ich eine Zahl vom Beitritt zum Forum bis heute, aber ich benötige die Werte für einen bestimmten Zeitraum.
Irgendeine Idee?

Sie müssen die Statistiken selbst mithilfe einer neuen Datenbankabfrage generieren. Um beispielsweise die Anzahl der Beiträge der letzten 30 Tage zu ermitteln:

SELECT count(*) from posts 
WHERE user_id=1
AND created_at > CURRENT_TIMESTAMP - INTERVAL '30 days'

Dieses Thema enthält viele Beispielabfragen, die Sie als Ausgangspunkt nutzen können:

Danke @david :slight_smile:

Aber was ist, wenn ich eine genaue Uhrzeit anstelle von Tagen angeben möchte, zum Beispiel, wenn ich den Zeitraum zwischen 2020-2-2 00:00:00 und 2020-3-1 00:00:00 ermitteln möchte?

Wenn ich SELECT count(*) from posts WHERE user_id=16 AND created_at > CURRENT_TIMESTAMP - INTERVAL '30 days' ausführe, erhalte ich eine Zahl, aber in meinen Statistiken ist die Zahl niedriger.
Wenn Sie das sehen: Ich bekomme 430 aus der Datenbank, aber tatsächlich sind es 308?
OnPaste.20200302-164643

Die in der Benutzeroberfläche angezeigte Anzahl bezieht sich nur auf öffentliche, nicht gelöschte Beiträge. Die Datenbankanzahl umfasst alle Beiträge, einschließlich gelöschter Beiträge, privaten Nachrichten und privater Kategorien.

Aber was ist, wenn ich diesen UI-Status innerhalb eines bestimmten Zeitraums erhalten möchte?

Sie müssen ähnliche Filter anwenden. Etwas wie folgt:

SELECT count(*) FROM posts p
JOIN topics t ON t.id = p.topic_id
WHERE p.user_id=23968
AND p.deleted_at IS NULL
AND NOT COALESCE(p.hidden, 't')
AND p.post_type = 1
AND t.deleted_at IS NULL
AND COALESCE(t.visible, 't')
AND t.archetype <> 'private_message'
AND p.user_id > 0
AND p.post_number > 1