-3

特定の場所のタグに対して最もアクティブなユーザーを (与えられた回答に関して) 表示する data.stackexchange の SQL クエリをどのようにまとめますか?

例えば。ここにリストされているトップ 30 に似ていますhttps://stackoverflow.com/tags/ruby-on-rails-3/topusersですが、場所によって異なります。

ベルリンでの過去 30 日間のトップ Ruby Answerers など

ありがとう!

4

1 に答える 1

1

したがって、データベース スキーマを調べた後、これが思いついたクエリです。

-- 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 日間です。また、多くのユーザーが場所をまったく指定していないため、場所は本当に信頼できないフィールドです。それはおそらく可能な限り近いものです。

データ エクスプローラーの使い方はそれほど難しくありません。少し試してみると、テーブルがどのように接続されているかがわかります。いい練習になりました:)

ここにクエリがあります

于 2015-08-26T12:28:10.643 に答える