RANK & DENSE_RANK Functions
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 para las mismas filas y omite números. DENSE_RANK() es similar a RANK(), pero no omite números.
Por ejemplo:
| id | level |
| 1 | 5 |
| 2 | 6 |
| 3 | 6 |
| 4 | 7 |
| 5 | 7 |
| 6 | 5 |
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 table1Esto devolverá:
| id | row_num | row_rank | row_dense_rank |
| 1 | 1 | 1 | 1 |
| 6 | 2 | 1 | 1 |
| 2 | 3 | 3 | 2 |
| 3 | 4 | 3 | 2 |
| 4 | 5 | 5 | 3 |
| 5 | 6 | 5 | 3 |
Explicación:
ROW_NUMBER(): Siempre único: 1, 2, 3, 4, 5, 6RANK():- nivel 5 (2 filas): ambos obtienen rango 1
- nivel 6 (2 filas): ambos obtienen rango 3 (salta 2)
- nivel 7 (2 filas): ambos obtienen rango 5 (salta 4)
DENSE_RANK():- nivel 5 (2 filas): ambos obtienen rango 1
- nivel 6 (2 filas): ambos obtienen rango 2 (sin salto)
- nivel 7 (2 filas): ambos obtienen rango 3 (sin salto)
Desafío
FácilTablas y columnas disponibles:
<strong>medals</strong>:<strong>region</strong>,<strong>medal_color</strong>,<strong>medal_count</strong>
Crea una consulta que muestre la región, el conteo total de medallas (suma de todas las medallas independientemente del color), y dos tipos de clasificaciones:
- Un
regular_rank(con brechas) sobre la suma de medallas - Un
dense_rank(sin brechas) sobre la suma de medallas
Ordena el resultado por:
order by total_medals desc, region ascHoja de referencia
SQL proporciona tres funciones de clasificación que se comportan de manera diferente con valores empatados:
ROW_NUMBER()- asigna números secuenciales únicosRANK()- asigna el mismo rango a valores empatados y omite los rangos subsiguientesDENSE_RANK()- asigna el mismo rango a valores empatados sin omitir rangos
Por ejemplo:
| id | level |
| 1 | 5 |
| 2 | 6 |
| 3 | 6 |
| 4 | 7 |
| 5 | 7 |
| 6 | 5 |
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 table1Esto devolverá:
| id | row_num | row_rank | row_dense_rank |
| 1 | 1 | 1 | 1 |
| 6 | 2 | 1 | 1 |
| 2 | 3 | 3 | 2 |
| 3 | 4 | 3 | 2 |
| 4 | 5 | 5 | 3 |
| 5 | 6 | 5 | 3 |
Pruébalo tú mismo
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4More Keywords
The IN keywordThe BETWEEN keywordThe LIKE keywordThe AS keywordRecap - Cellphone Models2Conditions
Conditions BasicsThe AND keywordThe OR keywordThe NOT keywordMultiple Conditions CombinedParenthesisBooleans5Arithmetic Operations
Mathematical OperatorsMathematical ColumnsThe Modulo OperationThe ROUND() Function3Specific Return Format
Null valuesSort Results Part 1Sort Results Part 2Recap - Cyber Security FirmLimit number of recordsRecap - Vehicle Factory6Intro Challenges
Recap - Parliamentary ElectionRecap - Police Criminal ArrestRecap - Bar Beverage ContainerRecap - Engineer new columns9Multiple tables
Basic Join Part 1Basic Join Part 2Recap - JoinSelf joinRecap - Self JoinUnionSimplify queries, WITH keywordRecap - With QueriesRecap - Real Estate Contractor12Window Functions part 2
RANK & DENSE_RANK FunctionsRecap - RANK & DENSE_RANKNTILE FunctionAggregation FunctionsROWS & RANGE Criterion