特定の場所のタグに対して最もアクティブなユーザーを (与えられた回答に関して) 表示する data.stackexchange の SQL クエリをどのようにまとめますか?
例えば。ここにリストされているトップ 30 に似ていますhttps://stackoverflow.com/tags/ruby-on-rails-3/topusersですが、場所によって異なります。
ベルリンでの過去 30 日間のトップ Ruby Answerers など
ありがとう!
特定の場所のタグに対して最もアクティブなユーザーを (与えられた回答に関して) 表示する data.stackexchange の SQL クエリをどのようにまとめますか?
例えば。ここにリストされているトップ 30 に似ていますhttps://stackoverflow.com/tags/ruby-on-rails-3/topusersですが、場所によって異なります。
ベルリンでの過去 30 日間のトップ Ruby Answerers など
ありがとう!
したがって、データベース スキーマを調べた後、これが思いついたクエリです。
-- Top 10 Ruby Answerers in the last 30 days in Berlin based on score
select top 10
u.displayname,
number_of_answers = count(*),
total_score = sum(p.score)
from
users u
join
posts p on p.owneruserid = u.id -- joined to get answer posts
join
posts pp on p.parentid = pp.id -- post parent is the question
join
posttags pt on pt.postid = pp.id -- tags for post parent
join
tags t on t.id = pt.tagid -- tags for tag name
where
t.tagname like '%ruby%' -- tags to filter for
and -- includes everything ruby inc. rails
p.creationdate > (getdate()-30) -- past 30 days
and
u.location like '%Berlin%' -- locations differ in format
group by
u.displayname
order by
3 desc; -- order by total score for "best" answerers
-- order by 2 (count) to get most active
私はデータ エクスプローラー スキーマの専門家ではないため、クエリが正しくない可能性があり、いくつかの注意点があります。日付フィルターは回答ではなく質問に適用されるため、より多くの回答を持つユーザーがいる可能性があります。古い質問に回答した場合は全体で過去 30 日間です。また、多くのユーザーが場所をまったく指定していないため、場所は本当に信頼できないフィールドです。それはおそらく可能な限り近いものです。
データ エクスプローラーの使い方はそれほど難しくありません。少し試してみると、テーブルがどのように接続されているかがわかります。いい練習になりました:)