Q&A for professional and enthusiast programmers
With UserBadges AS (Select UserId, Count(*) As NumBadges From Badges Where Name In (Select TagName from Tags) Group By UserId, Name) Select 1 As [Order], 'Gold' As Label, UserId As [User Link], Num From ( Select Top 10 UserId, Count(*) As Num From (Select UserId From UserBadges Where NumBadges>=3) d Group By UserId Order By Num desc) G union all Select 2 As [Order], 'Silver' As Label, UserId As [User Link], Num From ( Select Top 10 UserId, Count(*) As Num From (Select UserId From UserBadges Where NumBadges>=2) d Group By UserId Order By Num desc) S union all Select 3 As [Order], 'Bronze' As Label, UserId As [User Link], Num From ( Select Top 10 UserId, Count(*) As Num From (Select UserId From UserBadges Where NumBadges>=1) d Group By UserId Order By Num desc) B Order By [Order], Num Desc