Dies ist eine SQL-Version des Dashboard-Berichts für das Wachstum des Vertrauensniveaus.
Dieser Dashboard-Bericht zählt die Anzahl der Benutzer, die innerhalb des angegebenen Datumsbereichs täglich die Vertrauensstufen 1, 2, 3 und 4 erreichen, und hilft Administratoren, das Benutzerengagement und den Fortschritt durch die Vertrauensstufen in einer Discourse-Community zu verfolgen.
-- [params]
-- date :start_date = 2024-01-01
-- date :end_date = 2024-02-01
SELECT
date(created_at) AS date,
COUNT(*) FILTER (WHERE previous_value::integer < 1 AND new_value = '1') AS tl1_reached,
COUNT(*) FILTER (WHERE previous_value::integer < 2 AND new_value = '2') AS tl2_reached,
COUNT(*) FILTER (WHERE previous_value::integer < 3 AND new_value = '3') AS tl3_reached,
COUNT(*) FILTER (WHERE previous_value::integer < 4 AND new_value = '4') AS tl4_reached
FROM user_histories
WHERE created_at >= :start_date
AND created_at <= :end_date
AND (action = 2 OR action = 15)
GROUP BY date(created_at)
ORDER BY date(created_at)
SQL-Abfrageerklärung
Die Abfrage wählt Datensätze aus der Tabelle user_histories aus, die Änderungen im Benutzerstatus, einschließlich ihrer Vertrauensstufen, protokolliert.
Hier ist eine Aufschlüsselung der Abfrage:
- Datums-Parameter: Die Abfrage akzeptiert zwei Parameter,
:start_dateund:end_date, die den Datumsbereich für den Bericht definieren. Beide Datums-Parameter akzeptieren das DatumsformatJJJJ-MM-TT. date(created_at) AS date: Dieser Teil der SELECT-Anweisung extrahiert das Datum aus dem Zeitstempelcreated_atund bezeichnet es für jeden Datensatz als ‘date’. Dies wird verwendet, um die Ergebnisse nach Tag zu gruppieren.COUNT(*) FILTER (WHERE previous_value::integer < X AND new_value = 'Y') AS tlY_reached: Dieser Abschnitt zählt die Anzahl der Benutzer, die zu einer bestimmten Vertrauensstufe (Y) von einer niedrigeren Vertrauensstufe (weniger als X) aufgestiegen sind. DieFILTER-Klausel wird verwendet, um nur die Zeilen einzuschließen, die der angegebenen Bedingung entsprechen. Der::integer-Cast wird verwendet, um denprevious_valuefür den Vergleich in einen Integer umzuwandeln. Davon gibt es vier Zählspalten, eine für jede Vertrauensstufe von 1 bis 4.FROM user_histories: Dies gibt die Tabelle an, aus der die Daten abgerufen werden sollen.WHERE created_at >= :start_date AND created_at <= :end_date: Dies filtert die Datensätze, um nur diejenigen innerhalb des angegebenen Datumsbereichs einzuschließen.AND (action = 2 OR action = 15): Dies filtert die Datensätze, um nur diejenigen einzuschließen, bei denen die Aktion eine Änderung der Vertrauensstufe anzeigt. Die spezifischen Aktionen, die Änderungen der Vertrauensstufe entsprechen, werden durch die Zahlen 2 und 15 dargestellt.GROUP BY date(created_at): Dies gruppiert die Ergebnisse nach dem Datum, sodass Sie eine Zählung der Änderungen der Vertrauensstufe für jeden Tag innerhalb des angegebenen Bereichs erhalten.ORDER BY date(created_at): Dies ordnet die Ergebnisse chronologisch nach Datum.
Beispielergebnisse
| date | tl1_reached | tl2_reached | tl3_reached | tl4_reached |
|---|---|---|---|---|
| 2024-01-01 | 1 | 3 | 1 | 0 |
| 2024-01-02 | 5 | 1 | 0 | 1 |
| 2024-01-03 | 8 | 2 | 3 | 0 |
| … | … | … | … | … |