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 Top 10 2 As [Order], 'Silver' As Label, UserId As [User Link], Count(*) As Num From (Select UserId From UserBadges Where NumBadges>=2) d Group By UserId union all Select Top 10 3 As [Order], 'Bronze' As Label, UserId As [User Link], Count(*) As Num From (Select UserId From UserBadges Where NumBadges>=1) d Group By UserId Order By [Order], Num Desc