sql >> Base de Datos >  >> RDS >> Mysql

Clasificación basada en dos columnas

Creo que la siguiente consulta obtendrá el resultado que necesita. Primero debe calcular el rango en una subconsulta. Creo que es mucho más simple que su enfoque, solo tiene que ordenar los resultados por ganancias y diferencias en orden descendente (suponiendo que los campos sean números). Luego, simplemente seleccione todos los resultados y cambie ordenar a la descripción del jugador.

 SELECT player, wins, diff,rank from
 (
 SELECT player, wins, diff, @winrank := @winrank + 1 AS rank
 from tmpPoradi,(SELECT @winrank := 0) r 
 ORDER BY wins DESC,diff DESC
 )  rt
ORDER BY player

Espero no perderme nada.