DescriptionCalculate how many mugs StackExchange should give away(for graduation) to top reputed users on codereview.stackexchange.com so I'll also receive one. (output is divisible by 50).CodeDECLARE @mugs INT,@rounded_mugs INT,@inc INT,@remainder INT;SELECT  @mugs = COUNT(1) FROM Users WHERE Reputation >=   (SELECT Reputation FROM Users WHERE DisplayName='JaDogg');SET  @remainder = @mugs%50;IF (@remainder = 0) SET @inc = 0 ELSE SET @inc=50-@remainder; SELECT  @mugs+@inc AS 'AMOUNT OF MUGS TO GIVE AWAY';LinkCalculate amount of mugs to give away so I'll receive one
Calculate amount of mugs StackExchange should give away so I'll receive one
beginner;sql;sql server;stackexchange
DocumentationI think that what the query is doing is looking at your reputation rank, then rounding up to the nearest 50.  It would be nice to hit edit description and document that for the benefit of anyone else using Stack Exchange Data Explorer.GeneralityData Explorer allows parameterization.  Use it.StyleYou shouldn't have to declare variables for such a simple query.  In SQL, try to say what you want.  Don't state the steps for calculating it.A good way to avoid defining variables is to use Common Table Expressions (the WITH clause) instead.BrevityIt would help to use the relevant functions RANK() and CEILING().WITH UserRanks AS (    SELECT DisplayName         , RANK() OVER (ORDER BY Reputation DESC) AS RepRank        FROM Users)SELECT *, 50 * CEILING((RepRank + 0.0) / 50) AS BatchedRepRank    FROM UserRanks    WHERE DisplayName = ##Username:string##;