[sql]
SELECT
userid,
username,
COUNT(*) AS totalposts
FROM
post
WHERE
DATE_SUB(CURDATE(),INTERVAL 30 DAY) <= dateline
GROUP BY
userid
ORDER BY
totalposts DESC
LIMIT
10
[/sql]
That'll do the trick, we're assuming there are 30 days in a month though. Just set it to run at the last day of every month and your users won't know otherwise. If you want it to be completely accurate then I can look that up for you too