declare @sql nvarchar(max) create table #result (site sy...

0

Please login or register to vote for this query.

(click on this box to dismiss)

The Workplace

Q&A for members of the workforce navigating the professional setting

declare @sql nvarchar(max)

create table #result (site sysname
                    , hostname sysname
                    , upvotes integer
                    , downvotes integer)

select @sql = N'insert into #result' + STRING_AGG(concat(N'
select ''', name ,N''' as site
     , ''',hostname ,N'''
     , sum(case votetypeid when 2 then 1 else 0 end) 
     , sum(case votetypeid when 3 then 1 else 0 end) 
from ', quotename(name), N'.dbo.votes v
where votetypeid in (2,3)
'),N' 
union all')
from (select convert(nvarchar(max),name) name
    -- , convert(nvarchar(max),sitename)  sitename
    -- , meta
    -- , domain
     ,  concat( 
        -- based on an idea from Glorfindel 
        -- https://meta.stackexchange.com/a/321181
        (case sitename
        WHEN 'Audio' THEN 'video'
        WHEN 'Beer' THEN 'alcohol'
        WHEN 'CogSci' THEN 'psychology'
        WHEN 'Garage' THEN 'mechanics'
        WHEN 'Health' THEN 'medicalsciences'
        WHEN 'Moderators' THEN 'communitybuilding'
        WHEN 'Photography' THEN 'photo'
        WHEN 'Programmers' THEN 'softwareengineering'
        WHEN 'Vegetarian' THEN 'vegetarianism'
        WHEN 'Writers' THEN 'writing'
        WHEN 'Br' THEN 'pt'
        WHEN 'Mathoverflow' THEN concat((meta+'.'), sitename)
        ELSE case when sitename = domain then null else sitename end
        end +'.')
        , (case 
           when sitename <> 'mathoverflow' then (meta+'.') 
           else null 
           end) 
        , (case 
           when sitename <> 'mathoverflow' then concat((domain + '.'), 'com') 
           else 'net' 
           end)
        ) hostname
from (
select name
, case parsename(name,1) 
  when 'Meta' then parsename(name,2)
  else parsename(name,1) 
  end [sitename]
, case parsename(name,1) 
  when 'Meta' then 'meta'
  else null
  end [meta]
  , coalesce(parsename(name,3), parsename(name,2)) [domain]
from sys.databases
where database_id > 5
and (name not like '%.Meta' or name = 'StackExchange.Meta')
) dbs
) dbsall

exec (@sql)

;with nw_votes as 
(
select rank() over (order by (cast(downvotes as decimal) / upvotes) desc) [place]
     , site
     , upvotes
     , downvotes
     , (cast(downvotes as decimal) / upvotes) as ratio
from #result
)

select 'Current' [cat]
     , *
from nw_votes
where site =  db_name()
union all
select 'Rest'
     , *
from nw_votes
order by cat, ratio desc

print db_name()

Enter Parameters

Options:
Switch to meta site
loading Hold tight while we fetch your results