배지 이름 필터와 사용자 배지 수

특정 배지를 필터링하는 방법은 무엇인가요? 해당 배지를 몇 번 획득했는지 카운트해야 합니다.
예를 들어, "howto writer badge"의 경우 더 많은 howto를 작성한 사람이 누구인지 알고, 이를 통해 랭킹을 만들고 싶습니다.

이 문제에 대해 어떤 힌트가 있을까요? 다음 한 줄을 추가해 보았어요.
AND b.id = 136

하지만 작동하지 않아요.

여기에는 badge name 필터를 추가한 해당 쿼리의 약간 수정된 버전이 있습니다. badge name은 기본적으로 'all badges'로 설정됩니다. 이 값으로 설정되면 모든 배지의 결과가 반환됩니다. badge name을 특정 배지 이름으로 설정하면 해당 배지에 대한 결과만 반환됩니다.

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

그게 다예요 :slight_smile: 정말 감사합니다