39

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.

  • 13
    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? – ben is uǝq backwards Oct 30 '13 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. – Martijn Pieters Oct 30 '13 at 22:20
  • @benisuǝqbackwards Probably the last one, but I think we could all agree on who tops the list. – Dennis Meng Oct 30 '13 at 23:35
  • 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 '13 at 5:44
  • Interesting variant: Who has the most rep when excluding their primary site? – CodesInChaos Oct 31 '13 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. – Paul Taylor Nov 19 '15 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 '16 at 14:33
  • @CodesInChaos I implemented your suggestion in my answer – rene May 7 '16 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 '17 at 18:50
40

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.

  • 8
    Jon Skeet should change his username to an infinity symbol for Halloween. – jmort253 Oct 31 '13 at 5:45
  • 52
    @jmort, you have it backwards, the infinity symbol should change its name to Jon Skeet for Halloween. – jmac Oct 31 '13 at 7:58
  • 4
    @jmac Why are we restricting this to Halloween? – thegrinner Oct 31 '13 at 13:49
  • 4
    @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 '13 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 '14 at 22:39
  • 3
    No surprise that the title should go to the guy who can recite Pi, backwards. – willywonkadailyblah Jun 15 '16 at 21:34
  • 2
    Jon Skeet is the Chuck Norris of StackExchange. – Jason Chen Jul 4 '17 at 18:51
  • @JasonChen That's the only thing on this thread which is without exaggeration. – jpaugh Oct 21 '17 at 22:19
  • 4
    @jasonchen Chuck Norris asked how to be awesome, and Jon Skeet answered the question. – Yakk Oct 22 '17 at 12:51
  • "you have it backwards, the infinity symbol should change its name to Jon Skeet for Halloween." best comment ever. – user1271772 Nov 2 '18 at 7:14
23

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

  • Yay, I missed nobody! Great query, I'm quite sure I couldn't have done this. – wythagoras May 8 '16 at 18:51
  • Second place is by now help by Gilles. – quid Sep 20 '16 at 17:19
  • What do the three last columns mean? – Donald Duck May 12 '18 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 '18 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" ? – user1271772 Nov 2 '18 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 '18 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! – user1271772 Nov 2 '18 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 '18 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 '18 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! – user1271772 Nov 5 '18 at 3:00
8

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
    You could insert the flairs, as in the other answer, to have it exact and up to date. – quid May 8 '16 at 21:11
  • Two years later, my this query shows 20 people, may I edit your post to insert them? – peterh May 12 '18 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 '18 at 20:56

You must log in to answer this question.

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