Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL - classement par count() et GROUP BY

Vous devez d'abord regrouper l'ensemble de vos résultats par ID utilisateur et les classer... puis appliquer le classement

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

Pour obtenir pour une personne spécifique, et un problème en essayant la clause "HAVING", je la conclurais puis j'appliquerais un where...

select WrappedQuery.* 
   from ( entire query from above ) WrappedQuery
   where WrappedQuery.uid = SinglePerson