Топ [тег] ответчики за последние 30 дней для данного местоположения
Как бы вы собрали SQL-запрос для данных.stackexchange, который будет отображать наиболее активных пользователей (с точки зрения ответов) для тега в данном месте?
НАПР.. что-то похожее на топ-30, перечисленных здесь https://stackoverflow.com/tags/ruby-on-rails-3/topusers но место специфическое.
Итак, лучшие рубиновые ответчики за последние 30 дней в Берлине и т. д
Спасибо!

Ответы - Топ [тег] ответчики за последние 30 дней для данного местоположения / Top [TAG] Answerers in the Last 30 days for a given location

26.08.2015 03:28:10
Итак, после просмотра схемы базы данных это запрос, который я придумал.
-- 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
Я не эксперт в схеме Data explorer, поэтому возможно, что запрос не совсем корректен, и есть некоторые предостережения: фильтр даты применяется к вопросу, а не к ответу, поэтому возможно, что есть пользователи с большим количеством ответов за последние 30 дней в целом, если они ответили на более старые вопросы, а также местоположение является действительно ненадежным полем, поскольку многие пользователи вообще не указали местоположение. Это, вероятно, как можно ближе, хотя.
Обозреватель данных не так уж сложно использовать-поэкспериментируйте немного с ним, и вы поймете, как связаны таблицы. Это хорошее упражнение :)