Using SEDE, the following query gives the desired results:
SELECT COUNT(*) As AnsweringUsers
FROM (
SELECT COUNT(*) AS AnswerCount
FROM Users
LEFT JOIN Posts
ON Users.Id = Posts.OwnerUserId
WHERE Posts.PostTypeId = 2
AND Posts.CreationDate >= DATEADD(month, -12, CURRENT_TIMESTAMP)
GROUP BY Users.Id
HAVING Count(*) > 0
) AS X;
A query for total users shows 13,764,888. However, as @VLAZ suggested, many of those users are stale and have not logged on in years. It makes more sense to consider only active users. For simplicity, I used Users.LastAccessDate
, which includes any login within the query window. Here's the query for active users in the last 12 months:
SELECT COUNT(*) As ActiveUsers
FROM Users
WHERE Users.LastAccessDate >= DATEADD(month, -12, CURRENT_TIMESTAMP);
Here are the results for Stack Overflow on Jan 13, 2020.
Users Who Answered
Query Window |
Users Answered |
Active Users |
% of Active Users |
% of Total Users |
Last 12 months |
529,224 |
5,019,518 |
10.5% |
3.8% |
Last 6 months |
297,102 |
3,558,794 |
8.3% |
2.2% |
Last 3 months |
163,368 |
2,729,044 |
6.0% |
1.2% |
Last 1 month |
59,831 |
1,925,073 |
3.1% |
0.4% |
Users Who Posted
Query Window |
Users Posted |
Active Users |
% of Active Users |
% of Total Users |
Last 12 months |
1,210,741 |
5,019,518 |
24.1% |
8.8% |
Last 6 months |
691,999 |
3,558,794 |
19.4% |
5.0% |
Last 3 months |
391715 |
2729044 |
14.4% |
2.8% |
Last 1 month |
153,814 |
1,925,073 |
8.0% |
1.1% |