This query might be a good start. The query comes with the caveat that calculating reputation via SEDE is unreliable; reputation subtracted from casting downvotes on answer isn't taken into account, and neither is the 'timing' from votes when you hit the reputation cap. Also, this particular query reports the reputation at the end of the previous day (since ...
Answers don't have tags, Questions have.
Joining with PostTags on the Posts.ParentId should do the trick for that snippet:
Answers AS (
FROM Posts as P
INNER JOIN PostTags pt -- posttags is the join table
ON pt.postid = p.parentid -- join the question
INNER JOIN Tags
The Tags field looks like this: <java><unicode><comments> so you need to use LIKE. Here's how I did it (matching on the questions' tags):
Questions.PostTypeId = 1 -- Questions
AND Questions.Tags LIKE '%<java>%' -- Line I added
AND year(Questions.CreationDate) between '2014' AND '2018'
The Tags field isn't really fit for analysis like this, and furthermore it's only filled for questions. You should really join with the PostTags and Tags table. I suspect you do like to experiment yourself a bit, so here is a little help in this regard: a SEDE query listing a single user's score and # of posts in each tag. It pretty much matches my profile:
TLDR: See this query.
It produces results like:
"Top Tags" Score only counts answers, while Posts counts both Q&A.
"Top Tags" rank is computed by score. Ties are broken by post-count.
Community wiki posts ARE included in the post count, but only score earned before CW status counts.
To accept a CSV string of user ID's for input, use SEDE SQL ...
The Posts table contains both questions and answers (and some other types as well, e.g. tag wikis and excerpts). The total number of posts on Academia is (as of last Sunday morning) 95,073 but the maximum number of rows returned by SEDE is 50,000, so that's why you only get 50,000 rows.
The title and tags will only be present for questions, not for the ...