给定位置过去 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 并不难用 - 稍微试验一下,您就会了解表格是如何连接的。这是一个很好的练习:)
如何将 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 并不难用 - 稍微试验一下,您就会了解表格是如何连接的。这是一个很好的练习:)