Sie müssen Ihre gesamte Ergebnismenge zuerst nach Benutzer-ID gruppieren und ordnen... und dann das Ranking anwenden
select
@rownum := @rownum +1 as rank,
prequery.uid,
prequery.PostCount
from
( select @rownum := 0 ) sqlvars,
( SELECT uid, count(id) postCount
from posts
group by uid
order by count(id) desc ) prequery
Um für eine bestimmte Person ein Problem zu bekommen und die "HAVING"-Klausel zu versuchen, würde ich es dann einpacken und dann ein "where...
" anwendenselect WrappedQuery.*
from ( entire query from above ) WrappedQuery
where WrappedQuery.uid = SinglePerson