Menu
Coddy logo textTech

Funciones RANK y DENSE_RANK

Parte de la sección Fundamentos del Journey de SQL de Coddy. Lección 65 de 72.

ROW_NUMBER() es un tipo de función de clasificación, y hay dos más: RANK() y DENSE_RANK().

La función RANK() numera las filas como ROW_NUMBER(), pero asigna números idénticos a las mismas filas y omite números. DENSE_RANK() es similar a RANK(), pero no omite números.

Por ejemplo:

idnivel
15
26
36
47
57
65
SELECT id, 
	ROW_NUMBER() OVER (ORDER BY level) as row_num,
	RANK() OVER (ORDER BY level) as row_rank,
	DENSE_RANK() OVER (ORDER BY level) as row_dense_rank
FROM table1

Esto devolverá:

idrow_numrow_rankrow_dense_rank
1111
6211
2332
3432
4553
5653

Explicación:

  • ROW_NUMBER(): Siempre único: 1, 2, 3, 4, 5, 6
  • RANK():
    • nivel 5 (2 filas): ambas obtienen el rango 1
    • nivel 6 (2 filas): ambas obtienen el rango 3 (se salta el 2)
    • nivel 7 (2 filas): ambas obtienen el rango 5 (se salta el 4)
  • DENSE_RANK():
    • nivel 5 (2 filas): ambas obtienen el rango 1
    • nivel 6 (2 filas): ambas obtienen el rango 2 (sin saltos)
    • nivel 7 (2 filas): ambas obtienen el rango 3 (sin saltos)
challenge icon

Desafío

Fácil

Tablas y columnas disponibles:

  • medals: region, medal_color, medal_count

Crea una consulta que muestre la región, el recuento total de medallas (la suma de todas las medals, independientemente del color) y dos tipos de clasificaciones:

  1. Un regular_rank (con espacios) sobre la suma de medals
  2. Un dense_rank (sin espacios) sobre la suma de medals

Ordena el resultado por:

order by total_medals desc, region asc

Pruébalo tú mismo

quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos

Practica por tu cuenta: Playground de SQL