Skip to main content
5 of 5
replaced http://data.stackexchange.com/ with https://data.stackexchange.com/

The answer from Patrick is a reasonable indicator that doesn't hammer the SEDE database to much. It does report higher (sometimes way higher) counts for some posts then the actual /revisions page will show you. This is caused by the fact that some title, body and tag events will be rolled up in one revision, indicated by the same revisionguid, The following query examines all available databases in SEDE and counts the actual revisions per post, including tag wikis:

-- result table, don't rename and keep the site column
create table #results ( site nvarchar(250)
                       , post int
                       , title nvarchar(250)
                       , revcnt int);

declare @sql nvarchar(max) = ''   -- holds build up sql string

-- build one biq union sql, for each db
select @sql = @sql 
+ iif( len(@sql) > 1 
     , 'union'
     , 'insert into #results'
) +
-- here goes the per site query, fully qualify the database objects
N'
select ''' + name + '''
     , postid
     , (select (case when q.title is null and q.parentid is not null then 
                  ( select title 
                   from ' + quotename(name) + '.dbo.posts mq 
                   where mq.id = q.parentid)
               else title
               end) as qtitle
        from ' + quotename(name) + '.dbo.posts q
        where id = postid ) as nqtitle
     , count(*) as cnt
from (select postid
           , revisionguid
      from ' + quotename(name) + '.dbo.posthistory ph 
      where ph.posthistorytypeid < 10 -- all edits
      group by postid
             , revisionguid
      ) as data
group by postid
having count(*) > 10
'
from sys.databases
where database_id > 5
-- and (name not like '%.Meta' or name = 'StackExchange.Meta')

--print @sql

-- execute it
exec (@sql)

-- show results
select top 10000
       site
       , 
       -- URL builder from Lamak http://stackoverflow.com/a/38129701
      'http://' 
      + case PARSENAME(site,1)
        when 'audio' then 'avp'
        else PARSENAME(site,1)
        end 
      + coalesce('.' 
        + case PARSENAME(site,2)
          when 'audio' then 'avp'
          else PARSENAME(site,2)
          end , '')
      + IIF(patindex('%.MathOverflow%',site) > 0
      , ''
      , coalesce('.' + PARSENAME(site,3), '')
      )
      + IIF(patindex('%.MathOverflow%',site) > 0
      , '.net'
      , '.com'
      ) 
      + '/posts/'
      + cast(post as nvarchar) 
      + '/revisions'
      + '|'
      + case when title is null 
             then 'tag wiki:' + cast(post as nvarchar) 
             else title
        end as [Post]
      -- rest of columns
      , revcnt as [Number of revisions]
from #results
order by revcnt desc

drop table #results

When run today the result looks like this:

posts per site with revision count

For a per database query you can use this version

rene Mod
  • 92.1k
  • 17
  • 245
  • 516