sql >> Database teknologi >  >> RDS >> Mysql

Ranger brugere i mysql efter deres point

Dette er blot en rettelse af Gordon-løsning ved hjælp af variabler. Sagen er, at din rangfunktion ikke er den måde, rang skal fungere på. (elev 4 skal være rang 4)

SQL Fiddle Demo Du kan tilføje flere elever for at forbedre testen.

select er.*,
       (@rank := if(@points = points, 
                    @rank, 
                    if(@points := points,    
                       @rank + 1, 
                       @rank + 1                       
                      )
                   )                  
       ) as ranking
from students er cross join
     (select @rank := 0, @points := -1) params
order by points desc;
 

OUTPUT

| id | points | ranking | |----|--------|---------| | 1 | 80 | 1 | | 2 | 78 | 2 | | 3 | 78 | 2 | | 4 | 77 | 3 | | 5 | 66 | 4 | | 6 | 66 | 4 | | 7 | 66 | 4 | | 8 | 15 | 5 |

  1. Hvordan fjerner man dårlige tegn, der ikke er egnede til utf8-kodning i MySQL?

  2. Hvordan angiver jeg en unik begrænsning for flere kolonner i MySQL?

  3. Sådan filtreres poster med samlet funktion COUNT

  4. Ændring af en postgres containers serverport i Docker Compose