LEAD & LAG Functions
Parte de la sección Fundamentos del Journey de SQL de Coddy — lección 61 de 72.
Las funciones LEAD y LAG nos permiten acceder al valor de la fila actual por n pasos hacia atrás o n pasos hacia adelante.
Por ejemplo, si queremos calcular la relación de los ingresos de una empresa para la fila actual y un mes atrás, podemos extraer el valor del mes anterior:
| id | revenue | month |
| 1 | 532 | 5 |
| 2 | 492 | 6 |
| 3 | 393 | 7 |
| 4 | 723 | 8 |
SELECT id, revenue, LAG(revenue, 1) OVER (ORDER BY MONTH) as prev_month_revenue
FROM table1 ORDER BY idEsto creará la siguiente tabla:
| id | revenue | prev_month_revenue |
| 1 | 532 | |
| 2 | 492 | 532 |
| 3 | 393 | 492 |
| 4 | 723 | 393 |
De esta manera podemos calcular la relación prev_month_revenue/revenue.
Si en cambio usáramos la LEAD función, tomaría los ingresos del próximo mes de cada fila:
SELECT id, revenue, LEAD(revenue, 1) OVER (ORDER BY MONTH) as next_month_revenue
FROM table1 ORDER BY id| id | revenue | next_month_revenue |
| 1 | 532 | 492 |
| 2 | 492 | 393 |
| 3 | 393 | 723 |
| 4 | 723 |
Desafío
FácilTablas y columnas disponibles:
<strong>air_conditioners</strong>:<strong>id</strong>,<strong>efficiency</strong>,<strong>strength</strong>,<strong>month</strong>
Compara la eficiencia de cada acondicionador de aire con la anterior.
Escribe una consulta que muestre la eficiencia de cada acondicionador de aire junto con la eficiencia del acondicionador de aire anterior instalado (basado en id). Además, calcula la diferencia de eficiencia entre el actual y el anterior acondicionador de aire. Ordena el resultado por <strong>id</strong> y <strong>efficiency</strong> en orden ascendente.
Columnas de salida esperadas:
idefficiencyprevious_efficiency(usando LAG)efficiency_difference(eficiencia actual - eficiencia anterior)
Finalmente, después de esta consulta, filtra la fila donde hay un previous_efficiency vacío o efficiency_difference vacío de esta manera:
SELECT * FROM (
-- Your query here
)
WHERE previous_efficiency != 0Hoja de referencia
Las funciones LAG y LEAD permiten acceder a valores de filas anteriores o siguientes:
Función LAG - obtiene el valor de la fila anterior:
LAG(column_name, n) OVER (ORDER BY column)Función LEAD - obtiene el valor de la fila siguiente:
LEAD(column_name, n) OVER (ORDER BY column)Ejemplo usando LAG para obtener el ingreso del mes anterior:
SELECT id, revenue, LAG(revenue, 1) OVER (ORDER BY month) as prev_month_revenue
FROM table1 ORDER BY idEjemplo usando LEAD para obtener el ingreso del mes siguiente:
SELECT id, revenue, LEAD(revenue, 1) OVER (ORDER BY MONTH) as next_month_revenue
FROM table1 ORDER BY idLa primera fila tendrá NULL para el valor de LAG, y la última fila tendrá NULL para el valor de LEAD.
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