Rapport du tableau de bord - Utilisateurs les plus ignorés / mis en sourdine

Ceci est une version SQL du rapport de tableau de bord pour les utilisateurs les plus ignorés / mis en sourdine.

Ce rapport de tableau de bord fournit aux administrateurs des informations sur les utilisateurs de la plateforme qui ont été ignorés ou mis en sourdine par d’autres membres entre des dates de début et de fin spécifiées. Un utilisateur ignoré est celui qui a été sélectivement filtré par un membre afin que ses publications ne lui soient pas visibles, tandis qu’un utilisateur mis en sourdine est celui dont un membre a choisi de ne recevoir aucune notification.

Ce rapport peut identifier les utilisateurs qui causent des frictions au sein d’une communauté, ou dont le comportement amène les autres à ne pas vouloir interagir avec eux. Le rapport peut aider à prendre des décisions de modération, comme contacter les utilisateurs fréquemment ignorés ou mis en sourdine pour aborder leur comportement, ou comprendre plus largement s’il existe des problèmes dans la communauté qui nécessitent une attention.

-- [params]
-- date :start_date = 2023-01-01
-- date :end_date = 2025-01-01

WITH ignored_users AS (
    SELECT
        ignored_user_id AS user_id,
        COUNT(*) AS ignores_count
    FROM ignored_users
    WHERE created_at >= :start_date
      AND created_at <= :end_date
    GROUP BY ignored_user_id
    ORDER BY COUNT(*) DESC
),
muted_users AS (
    SELECT
        muted_user_id AS user_id,
        COUNT(*) AS mutes_count
    FROM muted_users
    WHERE created_at >= :start_date
      AND created_at <= :end_date
    GROUP BY muted_user_id
    ORDER BY COUNT(*) DESC
)

SELECT
    u.id AS user_id,
    u.username AS username,
    ig.ignores_count AS ignores_count,
    COALESCE(mu.mutes_count, 0) AS mutes_count,
    ig.ignores_count + COALESCE(mu.mutes_count, 0) AS total
FROM users AS u
JOIN ignored_users AS ig ON ig.user_id = u.id
LEFT OUTER JOIN muted_users AS mu ON mu.user_id = u.id
ORDER BY total DESC

Explication de la requête SQL

Cette requête SQL fonctionne en plusieurs étapes :

  • 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.
  • Expressions de table communes (CTE) :
    • La CTE ignored_users sélectionne ignored_user_id et compte combien de fois cet ID apparaît dans la table ignored_users (indiquant combien de fois l’utilisateur a été ignoré), en filtrant les résultats entre :start_date et :end_date.
    • La CTE muted_users est similaire mais sélectionne muted_user_id de la table muted_users et compte les occurrences dans les filtres de date.
  • Instruction SELECT principale : Sélectionne les détails de l’utilisateur de la table users et les comptes des CTE ignored_users et muted_users.
    • ignores_count est pris directement de la CTE ignored_users.
    • mutes_count est pris de la CTE muted_users, mais s’il est NULL (ce qui signifie que l’utilisateur n’a pas été mis en sourdine), il est remplacé par 0 en utilisant la fonction COALESCE.
    • Un total est calculé en additionnant les ignores et les mises en sourdine.
  • JOINS : La requête principale utilise un JOIN sur ignored_users pour inclure tous les utilisateurs qui ont été ignorés au moins une fois, et un LEFT OUTER JOIN sur muted_users pour inclure également les utilisateurs qui n’ont peut-être pas été mis en sourdine.
  • ORDER BY : Le rapport est trié par le total des ignores et des mises en sourdine dans l’ordre décroissant, montrant les utilisateurs les plus « problématiques » en haut du rapport.

Exemple de résultats

utilisateur nom d’utilisateur ignores_count mutes_count total
user1 user1 4 1 5
user2 user2 3 0 3
user3 user3 1 2 3
3 « J'aime »