sql >> Databáze >  >> RDS >> Mysql

Seřaďte uživatele v mysql podle jejich bodů

Toto je jen oprava Gordonova řešení pomocí proměnných. Jde o to, že vaše hodnostní funkce není způsob, jakým by hodnost měla fungovat. (student 4 by měl mít hodnost 4)

Ukázka SQL Fiddle Můžete přidat další studenty a zlepšit tak testování.

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;

VÝSTUP

| 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. Vraťte seskupený seznam s výskyty pomocí Rails a PostgreSQL

  2. mySql - vytvoření spojení pomocí seznamu hodnot oddělených čárkou

  3. Typy kurzoru serveru SQL Server – pouze vpřed dynamický kurzor | Kurz SQL Server / Kurz TSQL

  4. Proč PostgreSQL nevrací hodnoty null, když je podmínka <> pravdivá