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_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. - Sélection des données : La requête sélectionne les identifiants d’utilisateur et les noms d’utilisateur des tables
user_actions(ua) etusers(u), qui sont jointes à l’aide de la commandeINNER JOINde SQL, à condition queua.user_idcorresponde àu.id. - Filtrage des données : La clause
WHEREest utilisée pour filtrer les actions qui entrent dans la plage de dates spécifiée et ne considère que les actions de typewas_liked, représenté paraction_type = 2. - Agrégation : La fonction
COUNT(*)en combinaison avec la clauseGROUP BYregroupe les résultats paruser_id,usernameetuploaded_avatar_id, et compte le nombre de likes reçus par chaque utilisateur. - Ordonnancement des résultats : La clause
ORDER BYordonne ensuite les données agrégées de manière descendante en fonction delikes_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 |
| … | … | … |