Diese Data Explorer SQL-Abfrage soll Einblicke in die Effizienz und Reaktionsfähigkeit von Forenmoderatoren bei der Bearbeitung von von Benutzern gemeldeten Beiträgen geben.
Dieser Bericht zeigt die Anzahl der bearbeiteten Meldungen und die durchschnittliche Zeit zur Lösung von Meldungen durch jeden Moderator auf einer Website innerhalb eines bestimmten Zeitraums.
Das Verständnis, wie schnell und effektiv Moderatoren auf Meldungen reagieren, kann Administratoren helfen, sicherzustellen, dass das Forum ein sicherer und einladender Ort für alle Benutzer bleibt.
-- [params]
-- date :start_date = 2023-01-01
-- date :end_date = 2024-01-01
WITH period_actions AS (
SELECT pa.id,
pa.post_action_type_id,
pa.created_at,
pa.agreed_at,
pa.disagreed_at,
pa.deferred_at,
pa.agreed_by_id,
pa.disagreed_by_id,
pa.deferred_by_id,
pa.post_id,
pa.user_id,
COALESCE(pa.disagreed_at, pa.agreed_at, pa.deferred_at) AS responded_at,
EXTRACT(EPOCH FROM (COALESCE(pa.disagreed_at, pa.agreed_at, pa.deferred_at) - pa.created_at)) / 60 AS time_to_resolution_minutes -- Zeit bis zur Lösung in Minuten
FROM post_actions pa
WHERE pa.post_action_type_id IN (3,4,6,7,8) -- Meldungstypen
AND pa.created_at >= :start_date
AND pa.created_at <= :end_date
),
moderator_actions AS (
SELECT pa.id,
pa.post_id,
pa.created_at,
pa.responded_at,
pa.time_to_resolution_minutes,
COALESCE(pa.agreed_by_id, pa.disagreed_by_id, pa.deferred_by_id) AS moderator_id
FROM period_actions pa
WHERE COALESCE(pa.agreed_by_id, pa.disagreed_by_id, pa.deferred_by_id) IS NOT NULL
),
moderator_stats AS (
SELECT
m.moderator_id,
u.username AS moderator_username,
COUNT(m.id) AS handled_flags,
AVG(m.time_to_resolution_minutes) AS avg_resolution_time_minutes
FROM moderator_actions m
JOIN users u ON u.id = m.moderator_id
GROUP BY m.moderator_id, u.username
)
SELECT
ms.moderator_username,
ms.handled_flags,
ROUND(ms.avg_resolution_time_minutes::numeric, 2) AS avg_resolution_time_minutes
FROM moderator_stats ms
ORDER BY ms.handled_flags DESC, ms.avg_resolution_time_minutes ASC
SQL-Abfrageerklärung
Parameter
Die Abfrage verwendet zwei Parameter, um den zu analysierenden Zeitraum zu definieren:
:start_date: Das Startdatum des zu analysierenden Zeitraums im FormatJJJJ-MM-TT.:end_date: Das Enddatum des zu analysierenden Zeitraums, ebenfalls im FormatJJJJ-MM-TT.
CTEs erklärt
- period_actions: Diese CTE wählt innerhalb des angegebenen Zeitraums gemeldete Meldungen aus und konzentriert sich auf bestimmte Meldungstypen. Sie berechnet die Zeit, die für die Lösung jeder Meldung (in Minuten) benötigt wird, ab dem Zeitpunkt ihrer Erstellung bis zur Zustimmung, Ablehnung oder Vertagung durch einen Moderator.
- moderator_actions: Diese CTE filtert die Aktionen aus
period_actions, um nur diejenigen einzuschließen, auf die von einem Moderator reagiert wurde. Sie identifiziert den für jede Aktion verantwortlichen Moderator. - moderator_stats: Diese CTE aggregiert die Daten aus
moderator_actionsund berechnet die Gesamtzahl der von jedem Moderator bearbeiteten Meldungen sowie die durchschnittliche Lösungszeit (in Minuten) für die von ihnen bearbeiteten Meldungen.
Ergebnisse
Die endgültige Ausgabe der Abfrage liefert eine Liste von Moderatoren, sortiert nach der Anzahl der von ihnen bearbeiteten Meldungen, mit einer sekundären Sortierung nach ihrer durchschnittlichen Lösungszeit (aufsteigend). Für jeden Moderator zeigt der Bericht:
moderator_username: Der Benutzername des Moderators.handled_flags: Die Gesamtzahl der vom Moderator innerhalb des angegebenen Zeitraums bearbeiteten Meldungen.avg_resolution_time_minutes: Die durchschnittliche Zeit, die der Moderator benötigt, um eine Meldung zu lösen, gerundet auf zwei Dezimalstellen.
Beispielergebnisse
| moderator_username | handled_flags | avg_resolution_time_minutes |
|---|---|---|
| Moderator1 | 343 | 39.41 |
| Moderator2 | 70 | 30.51 |
| Moderator3 | 63 | 42.21 |