Encontrando os 'Top X' usuários com mais distintivos

Alguém conseguiu criar um SQL para exibir uma lista de usuários (talvez os 10 primeiros), ordenados pelo número total de Badges que possuem?

Fiquei dando uma olhada no Data Explorer e examinei a tabela “user_badges”. Vi que há as colunas “user_id” e “badge_id”, mas não tenho habilidade suficiente em SQL para executar algum tipo de consulta com contagem ou junção que produza uma lista dos dez primeiros.

Alguém já fez algo assim?

Usuários ordenados por quantidade de distintivos

Teste isso:

-- [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

Olá @SidV :wave:t2:

Isso funciona bastante bem, obrigado!

No entanto, não está totalmente preciso…

Veja o que eu obtenho:

Mas, ao passar o mouse sobre alguns desses usuários, aparecem números diferentes.

Memento tem 44 (não 48):

Brian tem 33 (não 35):

Já Paul realmente tem 34!

Se eu remover a linha que exclui administradores, as coisas ficam um pouco confusas:

Ping tem 52 (não 179):

Mas Ozone realmente tem 47:

Alguma ideia do que possa estar causando essas imprecisões, @SidV?

Obrigado mais uma vez pela sua ajuda nisso :smiley:

Sim. Muitos emblemas têm a opção de ser ganhos mais de uma vez. :thinking:

Confira se esta versão é mais precisa:

-- [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:

Sim, claro :blush:

No entanto, sua resposta atualizada é exatamente o que eu preciso :clap:t2:

Muito obrigado, @SidV :bowing_man:

Fico feliz em ajudar!

Lista de consultas atualizada :rocket:

Tenha um ótimo Natal! :christmas_tree: