Tag Experts


Please login or register to vote for this query.

(click on this box to dismiss)

Stack Overflow

Q&A for professional and enthusiast programmers

--This query lists the user who has achieved the highest combined answer score
-- for each tag and also answered at least three questions with that tag. 
-- Essentially, this query should tell you who knows the most about 
-- each tag (provided the tag is popular enough to fit these criteria).
-- In the event of a tie, both users are displayed.

-- list of the combined answer scores each user has 
-- for each of the tags they've answered. 
with scorePerTag as (
select   t.tagname, 
         sum(pa.score) * 10 as tagscore,
         count(pa.score) as tagAnswers
from     users u
join     posts pa
on       pa.owneruserid = u.id -- user owns given answer
join     posts pq
on       pa.parentid = pq.id -- answer is answer to given question
join     tags t
on       pq.tags like '%' + t.tagname + '%' -- question uses given tag
group by t.tagname, u.id
-- list of the top score for each tag from the previous results. 
-- this query will only get the tag and score, so it has to be joined 
-- to the first query again in order to get user details. 
topScorePerTag as (
select   max(tagscore) as maxtagscore,
         tagname -- as the maximum is based on tag and not user, 
                 -- user details cannot be in this result set. 
from     scorePerTag 
where    taganswers > 2 -- only use records where the user answered 3+ times
group by tagname 
-- joins the above two tables to find the user who has the most 
-- answer score for each tag. 
expertList as (
select   spt.tagname, 
from     scorepertag spt -- list of all tag scores for all users
join     topscorepertag tspt -- list of top tag scores
on       spt.tagname = tspt.tagname
and      spt.tagscore = tspt.maxtagscore -- filter spt by tspt
where    tagscore > 25 -- filter results for only high-scoring tags
and      taganswers > 2
select   id as [User Link],
         count(id) as 'Number of Tags',
         sum(taganswers) as 'Total Answers',
         sum(tagscore) as 'Total Answer Score'
from     expertList
group by id
order by count(id)

Enter Parameters

Switch sites:
loading Hold tight while we fetch your results