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_dateund:end_date, die den Datumsbereich für den Bericht definieren. Beide Datumsparameter akzeptieren das DatumsformatJJJJ-MM-TT.
- Die Abfrage akzeptiert zwei Parameter,
- Auswahl und Zählung:
DATE(created_at)konvertiert den Zeitstempelcreated_atin ein Datumsformat und bezeichnet ihn alsday. 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 alsnotifications_countzu 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
subtypeist 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_atder Nachricht zwischen dem angegebenen:start_dateund:end_dateliegt. - 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 > 0sichergestellt, dass die Nachrichten einem gültigen Benutzer zugeordnet sind.
- Die Abfrage filtert nur die Einträge, bei denen der
- 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 daysortiert, wodurch der Bericht leicht zu lesen und zu interpretieren ist.
- Die Abfrage verwendet
Beispielergebnisse
| day | notifications_count |
|---|---|
| 2023-12-17 | 3 |
| 2023-12-18 | 1 |
| 2023-12-21 | 1 |
| 2023-12-23 | 2 |
| 2023-12-26 | 1 |