sql >> Database >  >> RDS >> Mysql

MySQL - ranking op count() en GROUP BY

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



  1. Verouderde functies om uit uw gereedschapskist te halen - Deel 2

  2. fout 1265. Gegevens afgekapt voor kolom bij het laden van gegevens uit txt-bestand

  3. PHP MySQL-syntaxis voor het invoegen van datum, tijd

  4. Taal voor SQL-gegevensdefinitie