どの非SO選挙が最も多くの候補者を持っていましたか?
すべてのStackExchangeサイトのモデレーター選挙では、サイドバーに次のようなボックスがあります。
7日後、評判順に並べられた上位30人の候補者がプライマリフェーズに進みます。ただし、候補者が10人以下の場合は、直接選挙段階に進みます。
「トップ30」についてのビットは、私が見たどの選挙にも関係がありませんでした。旗艦サイトのStackOverflowでの過去数回の選挙でさえ、候補者は30人もいませんでした。「これはSO以外で関連性があったか」と尋ねるつもりでしたが、もう少し広い質問をさせてください。
SO以外で、どのmod選挙が最も多くの候補者を持っていましたか?
明らかに、私は/election
この情報を見つけるためにすべてのサイトのページをトロールすることができましたが、誰かがもっと簡単な方法を知っている(またはすでにデータを収集している)かもしれません。
回答
たくさんの候補者がいる3つの選挙(記憶から、私はそれらをこすりませんでした–おそらくArtOfCodeはこれのためのいくつかのコードを持っています):
- 2014数学選挙たの20先進主要相(制限が異なるが、その後、それはそうだった)に23人の候補、と、。
- 2016 Worldbuilding選挙19人の候補者と、
- 2018 Magentoの選挙19人の候補者と。
これは、ノミネートが削除された候補者をカウントしません(最近停止された、または明らかなジョークノミネートを投稿したため)。
このSEDEクエリを提供させてください。
これは正しい結果を返しませんが、Glorfindelによる回答で説明されているアプローチを適用するときに正しい答えを見つけるのに役立ちます。
私のクエリは、その特定の選挙に対してこれまでに投稿されたすべての実際の指名に基づいた選挙のランキングを示しています。SEは、取り下げられたノミネートも引き続き提供してくれます。
パブリックスキーマで、それらが撤回されたと判断する方法が見つかりませんでした。そのため、Glorfindelからの回答は正しく、これは正しくありません。
これが、非常識な一時テーブルと一時インデックス、さらに非常識な数のサブクエリを備えたマルチサイトの獣です。
このクエリは、推薦がposttypeid = 6の投稿として記録されるという事実に依存しています。これらの投稿は7日間の短い期間でのみ発生し、これらの期間は互いに大幅に離れています。
作成日に投稿を注文し、LAGおよびLEAD関数を使用して投稿間の時間を日数で見つけると、日数の差が7を超えるため、期間の開始と終了の場所を見つけることができます。DateDiff関数そこで重宝します。私は42を転換点とし、指名期間を延長することができました。これらの開始日と終了日を取得すると、それらの順序によって選挙番号が決まります。そこから、選挙の候補者の数を与えるために、各選挙で見つかった日付範囲で再びポストに参加することが問題になります。
列のサイト名は、正しい選挙ページにリンクしています。そこに実際の候補者の数を見つけることができます。これは、SEDEクエリ結果の数と比較した場合、何人の候補者が撤退したか、または撤回されたかを示します。
declare @sql nvarchar(max)
create table #result (site sysname
, hostname sysname
, id integer
, creationdate datetime
)
create index #idx_hn_cd on #result(hostname, creationdate)
select @sql = N'insert into #result' + STRING_AGG(concat(N'
select ''', name ,N''' as site
, ''',hostname ,N'''
, pm.id
, pm.creationdate
from ', quotename(name), N'.dbo.posts pm
where pm.posttypeid = 6
'),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') -- only main sites have elections
) dbs
) dbsall
exec (@sql)
select rank() over (order by count(*) desc) [ranking]
, s2 [Site name]
, election [election]
, start
, [end]
, count(*) [# nominees]
from
(
select ele_data.s2
, election
, min(ele_data.creationdate) start
, max(ele_data.creationdate) [end]
from
(
select data.s1 s2
, ceiling((row_number() over(partition by data.s1 order by creationdate) ) / 2.0) election
-- , min(creationdate) se
-- , max(creationdate) ee
, *
from (
select #result.site [s1]
, id
, datediff(
d
, lag(creationdate, 1 , '2008-09-01') over(partition by site order by creationdate)
, creationdate) [days prev]
, datediff(
d
, creationdate
,lead(creationdate, 1 , getdate()) over(partition by site order by creationdate)
) [days next]
, creationdate
from #result
) data
where [days prev] > 42 or [days next]> 42
) ele_data
group by ele_data.s2, election
) rollup
inner join #result r
on r.site = s2
and r.creationdate between start and [end]
where s2 <> 'StackOverflow'
group by s2, election, start, [end]
order by count(*) desc
今日実行すると、これが一番の結果のようになります。

SEDEは週に1回日曜日に更新されることに注意してください。
さんは親切たたえましょうモニカチェッリオを素晴らしいためSEDEチュートリアル彼女は書いています。SEDEチャット
で「こんにちは」と言ってください。