55

I am aware that there is a list of top users for each of the Stack Exchange sites. However, I am wondering if there is a list showing the combined reputation of each Stack Exchange user from every of the sites they have a profile in. For example if a user has 5000 on SO, 5000 on Server Fault and 5000 on Superuser they should be listed as having a combined reputation of 15000 in such a list.

10
  • 15
    Do you want the obvious answer :-), the actual answer (almost definitely the same as the obvious one) or a way of finding the actual answer out in the future? Oct 30, 2013 at 22:19
  • 4
    There is no such list, but noone can touch Jon Skeet even if there were. The next highest-scoring site is Mathematics, and the top user there has 200k. That's not nearly enough to come close to 693k that Jon has accumulated network wide. I'd say Marc Gravell comes second. Oct 30, 2013 at 22:20
  • 2
    This would be more interesting if we ranked users for sites similar in age or volume like amongst all beta sites, or all sites less than a year old. That will be much more useful than looking at the entire network.
    – asheeshr
    Oct 31, 2013 at 5:44
  • Interesting variant: Who has the most rep when excluding their primary site? Oct 31, 2013 at 8:51
  • Would be nice if there was a way to generate an actual list combining more than one site, restricting to a particular category (Technology/Life Arts etc). Also interesting would be list showing users who have joined the most sites. Nov 19, 2015 at 8:11
  • 1
    By now things changed a bit and Mathematics does not have the highest scoring users outside SO anymore. The highest accumulated point count besides the very top SO users I know of is that of Gilles at the moment 677k. I'd speculate he could be number two in a not too distant future. Another noteworthy user is egreg whose 474k on TeX - LaTeX is I believe the single highest rep on a site, excluding SO.
    – quid
    May 7, 2016 at 14:33
  • @CodesInChaos I implemented your suggestion in my answer
    – rene
    May 7, 2016 at 21:22
  • There would be a bit of a problem, because you get 100 free reputation for each new site as a reward, so average users wouldn't be able to accurately compare reputation. It would be good to see the leaders, though.
    – Jason Chen
    Jul 4, 2017 at 18:50
  • This question'so answers should be updated. Where is @Valorum from Scifi SE ? Jul 28, 2020 at 17:55
  • Top users from World's All Countries: data.stackexchange.com/stackoverflow/query/1250968
    – p t
    Jan 27, 2021 at 17:58

3 Answers 3

53

The answer undoubtedly is Jon Skeet.

img


The closest 2nd rank holder is Gilles.

img


The SEDE query by rene is really helpful for generating an entire list.

6
  • 59
    @jmort, you have it backwards, the infinity symbol should change its name to Jon Skeet for Halloween.
    – jmac
    Oct 31, 2013 at 7:58
  • 4
    @jmac Why are we restricting this to Halloween?
    – thegrinner
    Oct 31, 2013 at 13:49
  • 6
    @thegrinner good point. The infinity symbol should dress up as the infinity symbol for Halloween, because every other day of the year it is Jon Skeet -- the Alpha and the Omega, the beginning and the end.
    – jmac
    Oct 31, 2013 at 13:55
  • 2
    I predict a Y2K scenario whereby when Jon Skeet reaches 1M, SE blows up and everyone is left homeless for a month.
    – user212477
    Jul 30, 2014 at 22:39
  • 3
    No surprise that the title should go to the guy who can recite Pi, backwards. Jun 15, 2016 at 21:34
  • 4
    @jasonchen Chuck Norris asked how to be awesome, and Jon Skeet answered the question.
    – Yakk
    Oct 22, 2017 at 12:51
28

There were so many attempts the last few days to either improve or update this question that I decided to have a go with a multi-database query in SEDE.

This beast is the result:

-- start create url from dbname
IF OBJECT_ID ( '#siteurl', 'P' ) IS NOT NULL 
    DROP PROCEDURE #siteurl;
GO
create procedure #siteurl
   @dbname nvarchar(250),
   @res nvarchar(250) OUT
   as
   begin
      -- we have three sites that have borked DNS entries
      set @dbname = (case @dbname
      when 'StackExchange.Audio' then 'StackExchange.Avp'
      when 'StackExchange.Audio.Meta' then 'StackExchange.Avp.Meta'
      when 'StackExchange.Mathoverflow.Meta' then 'net.Mathoverflow.meta'
      else @dbname
      end)
      -- and one of those doesn't want to end with .com
      if @dbname <> 'net.Mathoverflow.meta' 
         set @dbname = 'com.' + @dbname
      exec #recursesiteurl @dbname,  @res OUTPUT
   end
GO
-- create url from dbname
IF OBJECT_ID ( '#recursesiteurl', 'P' ) IS NOT NULL 
    DROP PROCEDURE #recursesiteurl;
GO
create procedure #recursesiteurl
   @dbname nvarchar(250),
   @res nvarchar(250) OUT
   as
   begin
      declare @pos integer
      declare @rec nvarchar(250)
       
      set @res = @dbname
      set @pos = CHARINDEX('.', @dbname)
      if (@pos > 0 ) 
      begin
         set @rec = substring(@dbname, @pos+1, len(@dbname))
         exec #recursesiteurl @rec,  @rec output
         set @res = @rec 
                  + '.' 
                  + substring(@dbname, 0, @pos) 
      end
   end;
GO


-- all databases
declare  db_c cursor for select [name] 
                         from sys.databases 
                         where database_id > 5 -- skip master, temp, model, msdb, Data.SE
                         and ([name] not like '%.Meta' or [Name] = 'StackExchange.Meta') 

declare @db_c_name sysname   -- holds name of db after fetch
declare @sql nvarchar(max) -- holds build up sql string

-- result table
create table #all_users ( site nvarchar(250)
                            , userid int
                            , rep int
                            , accountid int
                            , displayname nvarchar(250));
                            
open db_c
fetch next from db_c into @db_c_name
while(@@FETCH_STATUS = 0)
begin
    set @sql = N'use '+ QUOTENAME(@db_c_name) +';
               declare @url nvarchar(250)
               exec #siteurl ''' + @db_c_name  + ''', @url output
               insert into #all_users 
               select @url
               , id
               , reputation
               , accountid
               , displayname
               from users;'
    exec (@sql)
   fetch next from db_c into @db_c_name
end;
close db_c;
deallocate db_c;

;with max_user_site as 
(
select row_number() over(order by sum(rep) desc) as rank
     , accountid
     , sum(rep) as tot_rep
from #all_users
group by accountid
),
max_site_for_user as 
(
  select userid
       , accountid
       , displayname
       , site
       , rep
  from #all_users au
  where rep = (select max(rep) 
               from #all_users 
               where accountid = au.accountid)
),
max_user_site_excl_main as
(
select row_number() over(order by sum(rep) desc) as rank
     , accountid
     , sum(rep) as tot_rep
from #all_users au
where rep < (select max(rep) 
               from #all_users 
               where accountid = au.accountid)
group by accountid
)

select mus.rank
     , replace(
       replace(
       replace(msu.site,
         '.StackExchange.com',''),
         '.com',''),
         '.net','') as [site]
     , 'http://' 
     + msu.site 
     + '/users/'
     + cast(msu.userid as nvarchar)
     + '|'
     + msu.displayname as [user]
     , mus.tot_rep as [total rep]
     , replace(
       replace(
       replace(msu2.site,
         '.StackExchange.com',''),
         '.com',''),
         '.net','') as [site]
     , 'http://' 
     + msu2.site 
     + '/users/'
     + cast(msu2.userid as nvarchar)
     + '|'
     + msu2.displayname as [user]
     , msuem.tot_rep as [total rep]
from max_user_site mus
inner join max_site_for_user msu on msu.accountid = mus.accountid
inner join max_user_site_excl_main msuem on mus.rank = msuem.rank
inner join max_site_for_user msu2 on msu2.accountid = msuem.accountid
order by mus.rank 

drop table #all_users

drop procedure #recursesiteurl
drop procedure #siteurl

I implemented the suggestion from CodesInChaos to show the rank without their main site rep included. If you let it run for a while you'll get this result today:

rep across sites

12
  • Yay, I missed nobody! Great query, I'm quite sure I couldn't have done this.
    – wythagoras
    May 8, 2016 at 18:51
  • Second place is by now help by Gilles.
    – quid
    Sep 20, 2016 at 17:19
  • What do the three last columns mean? May 12, 2018 at 13:43
  • 2
    @DonaldDuck ranking of users without their own top scoring site. That should bring those to the top who participate on a broader range of sites instead of focusing on one
    – rene
    May 12, 2018 at 13:46
  • @rene: I can't find myself on there. Is it because I complained about you closing that question about "changing moderators every X years" ? Or is it because your program filters out users that have usernames like "user1234567" ? Nov 2, 2018 at 7:38
  • @user1271772 if I would have to track every userid I expect to be disappointed by my actions I would have a fulltime job here with retroactively adapting all my queries. It is more likely you found a bug in my query but at first glance I can't see why it doesn't include your account. I'll take a look at it over the weekend.
    – rene
    Nov 2, 2018 at 9:48
  • @rene, I believe it is a bug, because I scrolled down through about 10,000 usernames (just because I found it very fun to watch how much longer it took to get from rep 100000 to 99000 then 101000 to 100000, and so on) and never once saw a "use1233454" type of username as far as I can remember. Thank you for offering to look at it over the weekend! Nov 2, 2018 at 12:01
  • @user1271772 the one thing I did notice is that on your main site you have around 5.2K and in the main site query the cutoff is at 5.7k due to the restriction of only being able to show 50.000 rows max. I'll dig into it.
    – rene
    Nov 2, 2018 at 12:12
  • @user1271772 Okay, here is a new build-up query that puts your ranking records at the top (so you can see what your rank is in the total result): data.stackexchange.com/stackoverflow/query/920425/… I have not yet added the linking to usernames as that requires a bit more fiddling which I don't want to spend time on now as that would push this over my weekend. Just for the record: your account is present in the original query but only in the left columns. I couldn't find it in the right columns, so something seems off there.
    – rene
    Nov 4, 2018 at 22:00
  • Thank you @rene, it is very much improved. There are still some bugs but at least the relevant information is there now! Nov 5, 2018 at 3:00
  • It is saying "Line 0: A severe error occurred on the current command. The results, if any, should be discarded. Operation cancelled by user." for me now. I can check again later to see if this is temporary. Dec 22, 2021 at 3:40
  • Why is gilles listed twice Jun 14 at 14:41
9

The following users were the only users with networkwide more than 600k reputation in May 2016:

  1. Jon Skeet - 949k (Stack Overflow, Meta)
  2. Marc Gravell - 694k (Stack Overflow, Meta)
  3. Gilles - 677k (Unix & Linux, Meta, Stack Overflow)
  4. Darin Dimitrov - 662k (Stack Overflow)
  5. BalusC - 653k (Stack Overflow)
  6. Hans Passant - 634k (Stack Overflow)
  7. VonC - 617k (Stack Overflow)
  8. Ignacio Vazquez-Abrams - 606k (Stack Overflow, Super User)

Notes: The sites are all sites they have more than 50k rep on.
As we see, it is very unlikely that anyone will pass Jon Skeet, at least not any time soon.

Besides, the chat list sorted by reputation can be useful, but users that do not use chat are missing and some of the numbers are horribly wrong, also when users don't use chat.

3
  • 3
    You could insert the flairs, as in the other answer, to have it exact and up to date.
    – quid
    May 8, 2016 at 21:11
  • Two years later, my this query shows 20 people, may I edit your post to insert them?
    – peterh
    May 12, 2018 at 17:21
  • @peterh I think this answer is useful to stay as historical reference. I edited it to indicate this. However, you can add a new answer if you want.
    – wythagoras
    Jun 30, 2018 at 20:56

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .