Menu
Coddy logo textTech

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.

challenge icon

Desafío

Fácil

Tablas 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

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