SQL >> Base de Datos >  >> RDS >> Database

Cómo agregar posiciones de clasificación de filas en SQL con RANK()

Problema:

Desea clasificar los registros omitiendo las posiciones de clasificación después de las filas que tienen la misma clasificación.

Ejemplo:

Nuestra base de datos tiene una tabla llamada championship con datos en las siguientes columnas:id (clave principal), user_name y score .

id nombre_de_usuario puntuación
111 Juan 12
112 María 23
115 Lisa 45
120 Alan 23
221 Cris 23

Vamos a mostrar los nombres de todos los usuarios y sus puntajes ordenados en orden descendente y clasificados por puntaje.

Solución 1:

SELECT RANK() OVER(ORDER BY score DESC) AS rank_place,
  user_name,
  score
FROM championship;

Esta consulta devuelve la siguiente clasificación:

rank_place nombre_de_usuario puntuación
1 Lisa 45
2 María 23
2 Alan 23
2 Cris 23
5 Juan 12

Observe que el número de rango es del 1 al 5, ordenado por puntuación en orden descendente.

Discusión:

Usa RANK si desea omitir posiciones de clasificación después de filas con la misma clasificación. En nuestro ejemplo, Mary, Alan y Chris tenían la misma clasificación de 2. La siguiente posición elegible es 5 (calculada a partir de 2 + 3 filas con la misma clasificación).