给定位置过去 30 天内的热门 [TAG] 回答者

Top [TAG] Answerers in the Last 30 days for a given location

如何将 data.stackexchange 的 SQL 查询放在一起,以显示给定位置标签的最活跃用户(根据给出的答案)?

EG。类似于此处列出的前 30 名 https://whosebug.com/tags/ruby-on-rails-3/topusers,但位置特定。

最近 30 天在柏林等地的 Ruby 个回答者

谢谢!

所以,在查看数据库架构之后,这就是我想出的查询。

-- 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 天内总体上有更多的答案,而且,位置是一个非常不可靠的字段,因为许多用户根本没有指定位置。它可能尽可能接近。

Data Explorer 并不难用 - 稍微试验一下,您就会了解表格是如何连接的。这是一个很好的练习:)

Here's the query