Cette requête SQL Data Explorer est conçue pour fournir des informations sur l’efficacité et la réactivité des modérateurs de forum dans le traitement des signalements soulevés par les utilisateurs sur les publications.
Ce rapport montre le nombre de signalements traités et le temps moyen de résolution des signalements par chaque modérateur sur un site, sur une période spécifiée.
Comprendre la rapidité et l’efficacité avec lesquelles les modérateurs répondent aux signalements peut aider les administrateurs à garantir que le forum reste un espace sûr et accueillant pour tous les utilisateurs.
-- [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 -- temps de résolution en minutes
FROM post_actions pa
WHERE pa.post_action_type_id IN (3,4,6,7,8) -- Types de signalement
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
Explication de la requête SQL
Paramètres
La requête utilise deux paramètres pour définir la plage de dates pour laquelle les données sont analysées :
:start_date: La date de début de la période que vous souhaitez analyser, au formatAAAA-MM-JJ.:end_date: La date de fin de la période que vous souhaitez analyser, également au formatAAAA-MM-JJ.
CTEs expliqués
- period_actions : Cette CTE sélectionne les signalements soulevés pendant la période spécifiée, en se concentrant sur des types de signalement spécifiques. Elle calcule le temps nécessaire pour résoudre chaque signalement (en minutes) depuis le moment où il a été créé jusqu’à ce qu’il soit approuvé, rejeté ou différé par un modérateur.
- moderator_actions : Cette CTE filtre les actions de
period_actionspour inclure uniquement celles qui ont reçu une réponse d’un modérateur. Elle identifie le modérateur responsable de chaque action. - moderator_stats : Cette CTE agrège les données de
moderator_actions, en calculant le nombre total de signalements traités par chaque modérateur et le temps moyen de résolution (en minutes) pour les signalements qu’ils ont traités.
Résultats
Le résultat final de la requête fournit une liste de modérateurs triés par le nombre de signalements qu’ils ont traités, avec un tri secondaire par leur temps de résolution moyen (par ordre croissant). Pour chaque modérateur, le rapport indique :
moderator_username: Le nom d’utilisateur du modérateur.handled_flags: Le nombre total de signalements traités par le modérateur pendant la période spécifiée.avg_resolution_time_minutes: Le temps moyen pris par le modérateur pour résoudre un signalement, arrondi à deux décimales.
Exemple de résultats
| moderator_username | handled_flags | avg_resolution_time_minutes |
|---|---|---|
| Modérateur1 | 343 | 39.41 |
| Modérateur2 | 70 | 30.51 |
| Modérateur3 | 63 | 42.21 |