إليك نسخة معدلة قليلاً من هذا الاستعلام تضيف مرشحًا باسم 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