Q&A about the site for physical fitness professionals, athletes, trainers, and those providing health-related needs
DECLARE @output TABLE ( UserName VARCHAR(max), UpVoteNo INT, DownVoteNo INT, Reputation INT, AccountId INT ); DECLARE @query VARCHAR(MAX); DECLARE dbcursor CURSOR FOR SELECT name FROM sysdatabases WHERE name NOT IN ('master', 'tempdb', 'model' ,'msdb', 'Data.StackExchange'); DECLARE @dbname VARCHAR(max); OPEN dbcursor; FETCH NEXT FROM dbcursor INTO @dbname; WHILE @@FETCH_STATUS = 0 BEGIN SELECT @query = ' SELECT DisplayName AS UserName, UpVotes AS UpVoteNo, DownVotes AS DownVoteNo, Reputation, Users.AccountId FROM [' + @dbname + '].dbo.Users WHERE UpVotes > 0 OR DownVotes > 0 '; INSERT INTO @output EXEC (@query); FETCH NEXT FROM dbcursor INTO @dbname; END CLOSE dbcursor; WITH Raw AS ( SELECT AccountId, MIN(UserName) AS UserName, SUM(UpVoteNo) AS UpVoteNo, SUM(DownVoteNo) AS DownVoteNo, MAX(Reputation) AS MaxRep, SUM(Reputation) AS SumRep FROM @output GROUP BY AccountId ), Raw2 AS ( SELECT DENSE_RANK() OVER (ORDER BY DownVoteNo DESC) AS DownRank, DENSE_RANK() OVER (ORDER BY UpVoteNo DESC) AS UpRank, DENSE_RANK() OVER (ORDER BY (1.0 * DownVoteNo / ( UpVoteNo + 1 )) DESC) AS RatioRank, 'http://stackexchange.com/users/' + CAST(AccountId AS VARCHAR(30)) + '?tab=accounts|' + UserName AS 'SE Account', AccountId, UpVoteNo, DownVoteNo, MaxRep, SumRep FROM Raw ) SELECT * FROM Raw2 ORDER BY DownRank + UpRank + RatioRank, AccountId;