Trouver les utilisateurs « Top X » avec le plus de badges

Quelqu’un a-t-il créé une requête SQL pour afficher une liste d’utilisateurs (les 10 premiers par exemple), classés par le nombre total de badges qu’ils possèdent ?

J’ai fait quelques recherches dans l’Explorateur de données et examiné la table « user_badges ». Je vois qu’il existe une colonne « user_id » et une colonne « badge_id », mais je ne suis pas assez compétent en SQL pour exécuter une requête de type compte ou jointure afin de produire une liste des dix premiers.

Quelqu’un a-t-il déjà réalisé quelque chose de similaire ?

Utilisateurs classés par nombre de badges

Testez ceci :

-- [params]
-- int :posts = 100
-- int :top = 10
SELECT u.username, count(ub.id) as "Badges"
FROM user_badges ub, users u, user_stats us
WHERE u.id = ub.user_id
AND u.id = us.user_id
AND us.post_count > :posts
AND (u.admin = 'f' AND u.moderator = 'f')
GROUP BY u.username
ORDER BY count(ub.id) desc
LIMIT :top

Bonjour @SidV :wave:t2:

Cela fonctionne assez bien, merci !

Cependant, ce n’est pas tout à fait précis…

Voici ce que j’obtiens :

Pourtant, survoler quelques-uns de ces utilisateurs affiche des chiffres différents.

Memento en a 44 (et non 48) :

Brian en a 33 (et non 35) :

Pourtant, Paul en a bel et bien 34 !

Si je supprime la ligne qui exclut les administrateurs, cela devient un peu fou :

Ping en a 52 (et non 179) :

Mais Ozone en a effectivement 47 :

Avez-vous une idée de ce qui pourrait causer ces inexactitudes @SidV ?

Merci encore pour votre aide sur ce sujet :smiley:

Oui. Beaucoup de badges offrent la possibilité d’être gagnés plus d’une fois. :thinking:

Vérifiez ceci pour plus de précision :

-- [params]
-- int :posts = 100
-- int :top = 10
SELECT u.username, count(ub.id) as "Badges"
FROM user_badges ub, users u, user_stats us, badges b
WHERE u.id = ub.user_id
AND u.id = us.user_id
AND b.id = ub.badge_id
AND us.post_count > :posts
AND (u.admin = 'f' AND u.moderator = 'f')
AND b.multiple_grant = 'f'
GROUP BY u.username
ORDER BY count(ub.id) desc
LIMIT :top

D’oh ! :man_facepalming:t2:

Oui, bien sûr :blush:

Cependant, votre réponse mise à jour est en fait exactement ce dont j’ai besoin :clap:t2:

Merci infiniment @SidV :bowing_man:

Je suis heureux de vous aider !

Liste des requêtes mise à jour :rocket:

Passez un excellent Noël ! :christmas_tree: