Volver a la lista de artículos Artículos
Lectura de 9 minutos

Función SQL LEAD

Conozca la función SQL LEAD, una función importante que debe conocer cualquiera que trabaje con SQL en el análisis de datos. Aprenda a través de ejemplos cómo utilizar esta función en la práctica.

La función SQL LEAD es una función de ventana SQL muy importante y útil. Las funciones de ventana SQL son esenciales para realizar análisis de datos eficientes. Permiten trabajar con grupos de filas y filas individuales al mismo tiempo. Facilitan la redacción de informes complejos. Son útiles cuando se preparan clasificaciones, se comparan distintos periodos de tiempo, se calculan totales corridos, medias móviles, la longitud de las series y mucho más.

Si quieres aprender a utilizar las funciones de ventana de SQL, consulta nuestro curso Funciones de ventana . Incluye más de 200 ejercicios detallados y prácticas. También puede utilizar nuestra hoja de consulta SQL Funciones de ventana como referencia rápida.

¿Qué es la función SQL LEAD?

La función SQL LEAD es una función de ventana SQL que le permite acceder a los datos de una fila posterior y compararlos con la fila actual. Esto es especialmente útil cuando necesitas trabajar con secuencias de datos. Por ejemplo, si está consultando datos de ventas, LEAD puede mostrarle las ventas de mañana junto a las de hoy, todo en una fila. Esto facilita la visualización inmediata de cambios o tendencias.

Puede utilizar la función LEAD para:

  • Comparar las cifras de ventas de un periodo a otro.
  • Calcular la diferencia en los niveles de existencias de un día para otro.
  • Estimar valores futuros con fines presupuestarios o de previsión.

LEAD es similar a LAG, otra función de ventana de SQL. La principal diferencia es que LEAD mira las filas siguientes, mientras que LAG mira las filas anteriores. Utilice LEAD cuando desee ver lo que ocurrirá a continuación y LAG cuando necesite revisar lo que ocurrió anteriormente. Ambas son útiles para comparar datos con filas cercanas.

Para ver ejemplos de uso de las funciones LEAD y LAG, así como una comparación de sus capacidades, consulte nuestra guía La función LAG y la función LEAD en SQL.

Sintaxis Básica de la Función LEAD en SQL

La forma más sencilla de utilizar la función LEAD es con un solo argumento, que especifica la columna que desea consultar:

LEAD(column1) OVER (ORDER BY column2)

Aquí tienes un desglose de esta sintaxis:

  • column1: Esta es la columna desde la que desea acceder a los datos de la siguiente fila.
  • OVER: Esta cláusula forma parte de la sintaxis de las funciones de ventana. Debe utilizarla con todas las funciones de ventana. Se utiliza para definir la ventana sobre la que operará la función LEAD.
  • ORDER BY column2: Esta cláusula especifica el orden en que deben procesarse las filas y determina la siguiente fila de la que extraer datos. La cláusula ORDER BY es obligatoria para LEAD.

Esta sintaxis obtendrá el valor de la columna especificada (column1) en la siguiente fila, basándose en el orden (ORDER BY column2) definido. Si no hay ninguna fila siguiente, la función devolverá NULL.

Ejemplo 1: Uso básico de la función SQL LEAD

Veamos un ejemplo básico de uso de la función LEAD. Suponga que tiene una tabla llamada production_schedule con columnas para la fecha y la cantidad de productos requeridos:

production_datequantity_required
2024-04-01 150
2024-04-02 180
2024-04-03 200

Si desea conocer la cantidad necesaria para el día siguiente, utilice la función LEAD del siguiente modo:</P

SELECT
  production_date,
  quantity_required,
  LEAD(quantity_required) OVER (ORDER BY production_date) AS next_day_quantity
FROM
  production_schedule;

Esta consulta añadirá una columna que mostrará las necesidades de cantidad del día siguiente junto con las de hoy.

production_date quantity_required next_day_quantity
2024-04-01 150 180
2024-04-02 180 200
2024-04-03 200 null

En nuestra consulta OVER(ORDER BY production_date) ordena las filas por fecha de producción. La función LEAD busca la fila siguiente a la actual y toma de ella el valor quantity_required. La fila siguiente a 2024-04-01 es la fila de 2024-04-02. La cantidad requerida para 2024-04-02 es 180, y esto es lo que devuelve LEAD. Si no hay fila siguiente, la función LEAD devuelve NULL: no hay fila siguiente para 2024-04-03, así que next_day_quantity para ella es NULL.

LEAD - ejemplo

Sintaxis de la función LEAD Continuación: Parámetros opcionales Offset y Default

La sintaxis completa de la función LEAD toma dos argumentos opcionales más, offset y default. Ofrecen más control sobre el comportamiento de LEAD.

LEAD(column1, offset, default) OVER (... ORDER BY column2)

He aquí un desglose de esta sintaxis:

  • column1: Esta es la columna desde la que desea acceder a los datos en una fila posterior.
  • offset: Este argumento entero opcional especifica cuántas filas por delante de la fila actual desea consultar. Si omite este parámetro, el valor predeterminado es 1, por lo que obtendrá los datos de la fila siguiente.
  • default: Este argumento opcional proporciona un valor por defecto que la función devolverá si el desplazamiento especificado excede los límites del conjunto de resultados. Si se omite, el valor de retorno por defecto es NULL.
  • OVER: Esta palabra clave introduce la especificación de la ventana, definiendo cómo se agrupan y ordenan las filas a efectos de LEAD.
  • ORDER BY column2: Esta cláusula especifica el orden en que se procesan las filas. Determina la fila "siguiente" de la que extraer datos para cada fila del conjunto de resultados de la consulta actual.

Ejemplo 2 Desplazamiento y argumentos por defecto

Veamos offset y default en un ejemplo. Utilizando la misma tabla production_schedule, suponga que desea ver la cantidad necesaria no sólo para el día siguiente, sino para los dos días siguientes, y quiere evitar los valores de NULL utilizando en su lugar 0:

SELECT
  production_date,
  quantity_required,
  LEAD(quantity_required, 2, 0) OVER (ORDER BY production_date) AS two_days_later_quantity
FROM
  production_schedule;
production_date quantity_required two_days_later_quantity
2024-04-01 150 200
2024-04-02 180 0
2024-04-03 200 0

Aquí se da 2 como argumento de desplazamiento. Esto le dice a la función LEAD que mire dos filas más adelante, en lugar de la fila siguiente. También se da 0 como argumento por defecto. Esto hace que la función LEAD muestre 0 en lugar de NULL cuando no hay una fila posterior de la que extraer datos.

LEAD - ejemplo 2

Ejemplo 3: Función LEAD con PARTITION BY

Obviamente, puede utilizar la sintaxis completa de las funciones de ventana con la función LEAD. Por ejemplo, puede combinarla con PARTITION BY. Suponga que su tabla production_schedule contiene datos sobre varios productos. Desea realizar previsiones por separado para cada producto.

production_date product_id quantity_required
2024-04-01101150
2024-04-02101180
2024-04-03101200
2024-04-0110290
2024-04-02102110
2024-04-03102120

Puedes particionar tus datos en OVER(), así:

SELECT
  production_date,
  product_id,
  quantity_required,
  LEAD(quantity_required) OVER (PARTITION BY product_id ORDER BY production_date) AS next_day_quantity
FROM
  production_schedule;

Esta consulta le da las necesidades de producción del día siguiente para cada producto, manteniendo los cálculos separados para cada product_id.

production_date product_id quantity_required next_day_quantity
2024-04-01 101 150 180
2024-04-02 101 180 200
2024-04-03 101 200 null
2024-04-01 102 90 110
2024-04-02 102 110 120
2024-04-03 102 120 null

Ejemplos prácticos de la función LEAD

En esta sección, veremos ejemplos prácticos del uso de la función LEAD en situaciones del mundo real. La función LEAD es especialmente útil en campos como el análisis de ventas, la gestión de inventarios y la programación de la producción.

Ejemplo práctico 1: Planificación de pedidos de harina para la producción de panadería

Escenario: Una panadería necesita planificar cuánta harina debe pedir cada una para la producción de pan. Es importante tener suficientes ingredientes sin exceso de existencias. Los datos sobre la producción de pan planificada se almacenan en la tabla daily_bread_production.

production_date batches_planned
2024-04-01 20
2024-04-02 25
2024-04-03 30

Sabemos que cada lote necesita 2 kg de harina. Queremos averiguar la demanda de harina para hoy y mañana. Esta es la consulta que podríamos utilizar:

SELECT
  production_date,
  batches_planned * 2 AS flour_needed_today_kg,
  LEAD(batches_planned * 2, 1, 0) OVER (ORDER BY production_date) AS flour_needed_tomorrow_kg
FROM
  daily_bread_production;

La consulta calcula la cantidad de harina necesaria para el día en curso y las necesidades para el día siguiente mediante la función LEAD.

He aquí el resultado de la consulta:

production_date flour_needed_today_kg flour_needed_tomorrow_kg
2024-04-01 40 50
2024-04-02 50 60
2024-04-03 60 null

Por supuesto, se trata de un ejemplo simplificado, pero es fácil imaginar cómo podría utilizarse este tipo de consulta en un entorno real para prever los recursos necesarios en función del calendario de producción previsto.

Ejemplo práctico 2: Diferencia entre dos filas

Escenario: En un entorno de análisis financiero, la función LEAD (o LAG) se utiliza para calcular el cambio en las ventas de un día a otro. Los datos sobre las ventas diarias se almacenan en la tabla daily_sales.

sales_date total_sales
2024-04-01 100
2024-04-02 110
2024-04-03 90
2024-04-04 150

Esta consulta calculará las ventas del día siguiente, el incremento entre las ventas de hoy y las del día siguiente, y el porcentaje de crecimiento día a día:

SELECT
  sales_date,
  total_sales,
  LEAD(total_sales) OVER (ORDER BY sales_date) AS next_day_sales,
  LEAD(total_sales) OVER (ORDER BY sales_date) - total_sales AS increase,
  ROUND(((LEAD(total_sales) OVER (ORDER BY sales_date) - total_sales) / total_sales) * 100, 1) AS percentage_growth
FROM
  daily_sales;

Esta consulta utiliza LEAD para encontrar las ventas del día siguiente. A continuación, utiliza LEAD y el valor del día actual para calcular el incremento. Por último, utiliza LEAD y las ventas de hoy para calcular el porcentaje de crecimiento diario.

Este es el resultado:

sales_date total_sales next_day_sales increase percentage_growth
2024-04-01 100 110 10 10.0
2024-04-02 110 90 -20 -18.2
2024-04-03 90 150 60 66.7
2024-04-04 150 null null null

Para más ejemplos y uso detallado de las funciones de ventana, consulte el artículo SQL Funciones de ventana Examples, que proporciona una perspectiva más amplia y escenarios adicionales. Este recurso puede ayudar a profundizar su comprensión y mejorar su capacidad para implementar funciones de ventana SQL con eficacia.

Conclusión y otros recursos

Hemos explorado la función SQL LEAD, una potente función de ventana SQL que permite a los analistas consultar las filas siguientes de sus conjuntos de datos. Hemos discutido la sintaxis básica de la función LEAD y hemos mostrado su aplicación en varios escenarios tales como tendencias de ventas, gestión de inventarios y programación de la producción.

Para quienes se estén iniciando en las funciones de ventana, les recomiendo nuestro curso Funciones de ventana . Se trata de un programa de formación interactivo y práctico diseñado para familiarizarle con la sintaxis completa y las aplicaciones de las funciones ventana de SQL. Incluye 218 ejercicios prácticos que le ayudarán a dominar los detalles de las funciones de ventana de SQL.

Si lo que busca es practicar las funciones ventana de SQL para consolidar sus conocimientos, nuestro Funciones de ventana Practice Set le ofrece 100 ejercicios prácticos que pondrán a prueba y consolidarán sus conocimientos. Además, nuestro artículo SQL Funciones de ventana Ejercicios de Práctica ofrece un conjunto de ejercicios seleccionados de nuestros cursos para poner a prueba sus conocimientos sobre las funciones de ventana y ofrecerle un anticipo de cómo son nuestros cursos.