Q&A for professional and enthusiast programmers
WITH TOP_Traditional AS ( SELECT top 1000 OwnerUserId, SUM(Case WHEN v.VoteTypeID = 1 THEN 15 WHEN v.VoteTypeID = 1 AND p.PostTypeID = 1 THEN 5 WHEN v.VoteTypeID = 2 AND p.PostTypeID = 2 THEN 10 WHEN v.VoteTypeID = 3 THEN -2 END) as RepEarned FROM posts p INNER JOIN Votes v ON v.PostId = p.Id WHERE OwnerUserId is not null and v.creationDate >= DateAdd(month,-1,Getdate()) and v.creationDate < Getdate() GROUP BY OwnerUserId ORDER BY RepEarned DESC), TOP_NEWOnly AS ( SELECT top 1000 OwnerUserId, SUM(Case WHEN v.VoteTypeID = 1 THEN 15 WHEN v.VoteTypeID = 1 AND p.PostTypeID = 1 THEN 5 WHEN v.VoteTypeID = 2 AND p.PostTypeID = 2 THEN 10 WHEN v.VoteTypeID = 3 THEN -2 END) as RepEarned FROM posts p INNER JOIN Votes v ON v.PostId = p.Id WHERE OwnerUserId is not null and v.creationDate >= DateAdd(month,-1,Getdate()) and v.creationDate < Getdate() and p.creationDate >= DateAdd(month,-1,Getdate()) and p.creationDate < Getdate() GROUP BY OwnerUserId ORDER BY RepEarned DESC) , final as( SELECT COALESCE(t.OwnerUserId, n.OwnerUserId) [User Link], RANK() OVER (Order by t.RepEarned Desc) T_rep_Rank, RANK() OVER (Order by n.RepEarned Desc) N_Rep_rank, t.RepEarned t_RepEarned, n.RepEarned n_RepEarned ,((RANK() OVER (Order by t.RepEarned Desc)) - (RANK() OVER (Order by n.RepEarned Desc))) Rep_Rank_Diff_New_vs_Trad FROM TOP_Traditional t FULL OUTER JOIN TOP_NEWOnly n ON t.OwnerUserID = n.OwnerUserId ) SELECT * FROM final ORDER BY n_rep_rank,t_rep_rank