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_dateet:end_date, qui définissent la plage de dates pour le rapport. Les deux paramètres de date acceptent le format de dateAAAA-MM-JJ.
- La requête accepte deux paramètres,
- Expressions de table communes (CTE) :
- La CTE
ignored_userssélectionneignored_user_idet compte combien de fois cet ID apparaît dans la tableignored_users(indiquant combien de fois l’utilisateur a été ignoré), en filtrant les résultats entre:start_dateet:end_date. - La CTE
muted_usersest similaire mais sélectionnemuted_user_idde la tablemuted_userset compte les occurrences dans les filtres de date.
- La CTE
- Instruction SELECT principale : Sélectionne les détails de l’utilisateur de la table
userset les comptes des CTEignored_usersetmuted_users.ignores_countest pris directement de la CTEignored_users.mutes_countest pris de la CTEmuted_users, mais s’il estNULL(ce qui signifie que l’utilisateur n’a pas été mis en sourdine), il est remplacé par 0 en utilisant la fonctionCOALESCE.- Un total est calculé en additionnant les ignores et les mises en sourdine.
- JOINS : La requête principale utilise un
JOINsurignored_userspour inclure tous les utilisateurs qui ont été ignorés au moins une fois, et unLEFT OUTER JOINsurmuted_userspour 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 |