Dashboard-Bericht - Moderatoren benachrichtigen

Dies ist eine SQL-Version des Dashboard-Berichts für „Notify Moderators“.

Dieser Dashboard-Bericht liefert eine tägliche Zählung von privaten Nachrichten, die an Moderatoren mit dem Benachrichtigungssubtyp notify_moderators gesendet wurden. Diese Erkenntnis hilft Administratoren, Zeiten mit hoher Nachfrage nach der Aufmerksamkeit von Moderatoren zu verstehen und kann darauf hinweisen, wann Benutzer Probleme haben, die Moderationsunterstützung erfordern.

-- [params]
-- date :start_date = 2023-12-15
-- date :end_date = 2024-01-16

SELECT
  DATE(created_at) AS day,
  COUNT(1) AS notifications_count
FROM topics
WHERE archetype = 'private_message'
  AND subtype = 'notify_moderators'
  AND created_at BETWEEN :start_date AND :end_date
  AND deleted_at IS NULL
  AND user_id > 0
GROUP BY DATE(created_at)
ORDER BY day

Erklärung der SQL-Abfrage

Die Abfrage extrahiert Daten aus der Tabelle topics – insbesondere solche, die innerhalb eines bestimmten Zeitraums als private Nachrichten an Moderatoren qualifiziert sind. Lassen Sie uns dies aufschlüsseln:

  • Datumsparameter:
    • Die Abfrage akzeptiert zwei Parameter, :start_date und :end_date, die den Datumsbereich für den Bericht definieren. Beide Datumsparameter akzeptieren das Datumsformat JJJJ-MM-TT.
  • Auswahl und Zählung:
    • DATE(created_at) konvertiert den Zeitstempel created_at in ein Datumsformat und bezeichnet ihn als day. Dies ermöglicht die Gruppierung und Zählung von Nachrichten nach dem Tag ihrer Erstellung.
    • COUNT(1) wird verwendet, um die Anzahl der Einträge für jeden Tag zu zählen und diese Zählung als notifications_count zu bezeichnen.
  • Filterkriterien:
    • Die Abfrage filtert nur die Einträge, bei denen der archetype 'private_message' ist, um sicherzustellen, dass wir uns ausschließlich mit Nachrichten und nicht mit anderen Arten von Themen befassen.
    • Der subtype ist auf 'notify_moderators' beschränkt, um Fälle zu isolieren, in denen Benutzer Moderatoren benachrichtigen oder um Hilfe bitten.
    • Es wird geprüft, ob der Zeitstempel created_at der Nachricht zwischen dem angegebenen :start_date und :end_date liegt.
    • Nachrichten, die gelöscht wurden (deleted_at IS NULL), werden von der Zählung ausgeschlossen, um sicherzustellen, dass der Bericht nur aktive Kommunikation widerspiegelt.
    • Schließlich wird durch die Bestätigung user_id > 0 sichergestellt, dass die Nachrichten einem gültigen Benutzer zugeordnet sind.
  • Gruppierung und Sortierung:
    • Die Abfrage verwendet GROUP BY DATE(created_at), um die Ergebnisse nach jedem Tag innerhalb des angegebenen Datumsbereichs zu aggregieren.
    • Anschließend werden die Ergebnisse chronologisch mit ORDER BY day sortiert, wodurch der Bericht leicht zu lesen und zu interpretieren ist.

Beispielergebnisse

day notifications_count
2023-12-17 3
2023-12-18 1
2023-12-21 1
2023-12-23 2
2023-12-26 1
4 „Gefällt mir“