ROW_NUMBER function
Parte de la sección Fundamentos del Journey de SQL de Coddy — lección 57 de 72.
Las funciones de ventana realizan cálculos sobre un conjunto de filas de tabla relacionadas con la fila actual. A diferencia de las funciones de agregación regulares, las funciones de ventana no colapsan los resultados en una sola fila.
Son particularmente útiles cuando necesitas:
- Calcular totales acumulados
- Clasificar elementos dentro de grupos
- Comparar filas actuales con filas anteriores/siguientes
- Analizar tendencias en períodos de tiempo
Por ejemplo, aquí hay algunos ejemplos del mundo real para casos de uso de funciones de ventana:
- Análisis de Ventas
- Calcular las ventas acumuladas hasta cada año (1995, 1997, 1999)
- Encontrar los productos más vendidos para cada trimestre
- Estadísticas Deportivas
- Rastrea los conteos de medallas olímpicas a lo largo de diferentes años
- Identifica a los atletas líderes en cada período de competencia (2000, 2004, 2008)
ROW_NUMBER() es una de las funciones de ventana más simples. Asigna un número secuencial único a cada fila en el conjunto de resultados. Aquí cómo usarla:
SELECT column1, column2,
ROW_NUMBER() OVER ([PARTITION BY column] [ORDER BY column]) as row_num
FROM table_name;Es obligatorio usar la cláusula OVER con ROW_NUMBER(): ROW_NUMBER() OVER ()
Por ejemplo:
SELECT product_name, sale_date,
ROW_NUMBER() OVER () as row_num
FROM sales;Esto agrega una columna row_num que cuenta desde 1 hasta el número total de filas.
Nota: La cláusula OVER puede contener instrucciones de ordenación y particionamiento para controlar cómo funciona la numeración.
Desafío
FácilTablas y columnas disponibles:
<strong>liquids</strong>:<strong>id</strong>,<strong>density</strong>
Obtén todos los líquidos con densidad mayor a 5.677.
Numera el resultado (usa la función ROW_NUMBER()) y llama a esta columna row_num
Hoja de referencia
Las funciones de ventana realizan cálculos sobre un conjunto de filas de tabla relacionadas con la fila actual sin colapsar los resultados en una sola fila.
ROW_NUMBER() asigna un número secuencial único a cada fila:
SELECT column1, column2,
ROW_NUMBER() OVER ([PARTITION BY column] [ORDER BY column]) as row_num
FROM table_name;La cláusula OVER es obligatoria con ROW_NUMBER():
SELECT product_name, sale_date,
ROW_NUMBER() OVER () as row_num
FROM sales;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() Function8Statistics
Built-In Aggregate Part 1Built-In Aggregate Part 2Grouping Part 1Grouping Part 2Subqueries Part 1Subqueries Part 2Recap - Total Gain ShopRecap - Scooter ShopRecap - Coffee Shop11Window Functions part 1
ROW_NUMBER functionORDER BY criterionPARTITION BY criterionPARTITION & ORDERLEAD & LAG FunctionsRecap - LEAD & LAGRecap - PicturesRecap - Boxes3Specific 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 columns