Rapport Dashboard - Meilleurs utilisateurs par likes reçus

Ceci est une version SQL du rapport de tableau de bord pour les meilleurs utilisateurs par likes reçus.

Ce rapport de tableau de bord montre les meilleurs utilisateurs d’un site par le nombre de likes reçus sur toutes les publications. Le rapport aide les administrateurs à identifier les utilisateurs les plus engagés en comptant les likes reçus sur une période donnée, ce qui permet de reconnaître les membres actifs, d’évaluer la qualité du contenu, de suivre les tendances d’engagement des utilisateurs et de prendre des décisions éclairées en matière de gestion de communauté, telles que la sélection de modérateurs.

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

SELECT
ua.user_id AS user_id,
u.username as username,
COUNT(*) likes_received
FROM user_actions ua
INNER JOIN users u on ua.user_id = u.id
WHERE ua.created_at::date BETWEEN :start_date AND :end_date
AND ua.action_type = 2
GROUP BY ua.user_id, u.username, u.uploaded_avatar_id
ORDER BY likes_received DESC

Explication de la requête SQL

La requête fonctionne comme suit :

  • 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 des données : La requête sélectionne les identifiants d’utilisateur et les noms d’utilisateur des tables user_actions (ua) et users (u), qui sont jointes à l’aide de la commande INNER JOIN de SQL, à condition que ua.user_id corresponde à u.id.
  • Filtrage des données : La clause WHERE est utilisée pour filtrer les actions qui entrent dans la plage de dates spécifiée et ne considère que les actions de type was_liked, représenté par action_type = 2.
  • Agrégation : La fonction COUNT(*) en combinaison avec la clause GROUP BY regroupe les résultats par user_id, username et uploaded_avatar_id, et compte le nombre de likes reçus par chaque utilisateur.
  • Ordonnancement des résultats : La clause ORDER BY ordonne ensuite les données agrégées de manière descendante en fonction de likes_received, de sorte que l’utilisateur ayant reçu le plus de likes se trouve en haut du rapport.

La requête produit une liste d’utilisateurs avec le nombre de likes qu’ils ont reçus dans la plage de dates donnée, triée du plus élevé au plus bas.

Exemple de résultats

user username likes_received
user1 user1 748
user2 user2 324
user3 user3 308
2 « J'aime »