Contagem de distintivos do usuário com filtro de nome

Como posso filtrar um distintivo específico? Preciso contar quantas vezes ele foi conquistado.
Ex.: “distintivo de escritor de howto” — preciso saber quem escreveu mais howtos e criar um ranking.

Alguma dica sobre isso? Tentei adicionar uma linha
AND b.id = 136

Mas não funcionou

Aqui está uma versão ligeiramente modificada dessa consulta que adiciona um filtro badge name. O badge name padrão é 'all badges'. Quando definido com esse valor, serão retornados resultados para todos os badges. Se você definir o badge name como o nome de um badge específico, apenas os resultados desse badge serão retornados.

-- [params]
-- int :posts = 1
-- int :top = 10
-- string :badge_name = all badges

SELECT
username,
COUNT(ub.id) as badge_count
FROM user_badges ub
JOIN users u ON u.id = ub.user_id
JOIN user_stats us
ON us.user_id = ub.user_id
JOIN badges b ON b.id = ub.badge_id
WHERE us.post_count > :posts
AND (u.admin = 'f' AND u.moderator = 'f')
AND CASE
        WHEN 'all badges' = :badge_name
            THEN true
        ELSE b.name = :badge_name
    END
GROUP BY u.username
ORDER BY badge_count DESC

É isso mesmo :slight_smile: muito obrigado