Rapport du tableau de bord - Notifier les modérateurs

Ceci est une version SQL du rapport de tableau de bord pour « Notifier les modérateurs ».

Ce rapport de tableau de bord fournit un décompte quotidien des messages privés envoyés aux modérateurs avec un sous-type de notification notify_moderators. Cette information aide les administrateurs à comprendre les périodes de forte demande d’attention des modérateurs et pourrait indiquer quand les utilisateurs rencontrent des problèmes nécessitant une assistance de modération.

-- [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

Explication de la requête SQL

La requête fonctionne en extrayant des données de la table topics – spécifiquement, celles qui sont qualifiées de messages privés aux modérateurs dans un laps de temps donné. Décortiquons-la :

  • Paramètres de date :
    • La requête accepte deux paramètres, :start_date et :end_date, qui définissent la plage de dates pour le rapport. Les deux paramètres de date acceptent le format de date AAAA-MM-JJ.
  • Sélection et comptage :
    • DATE(created_at) convertit l’horodatage created_at en format de date et le nomme day. Cela permet de regrouper et de compter les messages par le jour où ils ont été créés.
    • COUNT(1) est utilisé pour compter le nombre d’entrées pour chaque jour, nommant ce compte notifications_count.
  • Critères de filtrage :
    • La requête filtre uniquement les entrées où l’archetype est 'private_message', s’assurant que nous examinons uniquement les messages et non d’autres types de sujets.
    • Le subtype est limité à 'notify_moderators', isolant les cas où les utilisateurs notifient ou demandent de l’aide aux modérateurs.
    • Elle vérifie que l’horodatage created_at du message se situe entre le :start_date et le :end_date spécifiés.
    • Les messages qui ont été supprimés (deleted_at IS NULL) sont exclus du décompte pour garantir que le rapport reflète uniquement les communications actives.
    • Enfin, elle s’assure que les messages sont associés à un utilisateur valide en confirmant user_id > 0.
  • Regroupement et tri :
    • La requête utilise GROUP BY DATE(created_at) pour agréger les résultats par chaque jour dans la plage de dates spécifiée.
    • Ensuite, elle trie les résultats chronologiquement avec ORDER BY day, rendant le rapport facile à lire et à interpréter.

Résultats d’exemple

jour notifications_count
2023-12-17 3
2023-12-18 1
2023-12-21 1
2023-12-23 2
2023-12-26 1
4 « J'aime »