U moet eerst uw volledige resultatenset gegroepeerd op gebruikers-ID en geordend hebben... pas daarna de rangschikking toe
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
Om voor een specifieke persoon te komen en een probleem te hebben met het proberen van de "HAVING"-clausule, zou ik het dan afronden en dan een waar toepassen...
select WrappedQuery.*
from ( entire query from above ) WrappedQuery
where WrappedQuery.uid = SinglePerson