Funciones LEAD y LAG
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 con n pasos atrás o n pasos adelante.
Por ejemplo, si queremos calcular la proporción de los ingresos de una empresa para la fila actual y hace un mes, 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 proporción prev_month_revenue/revenue.
Si en cambio usáramos la función LEAD, tomaría los ingresos del mes siguiente 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:
air_conditioners:id,efficiency,strength,month
Compara la eficiencia de cada acondicionador de aire con la del anterior.
Escribe una consulta que muestre la eficiencia de cada acondicionador de aire junto con la eficiencia del acondicionador de aire anterior instalado (según id). Además, calcula la diferencia de eficiencia entre el acondicionador de aire actual y el anterior. Ordena el resultado por id y efficiency en orden ascendente.
Columnas esperadas de salida:
idefficiencyprevious_efficiency(usando LAG)efficiency_difference(eficiencia actual - eficiencia anterior)
Finalmente, incluye la consulta en otra consulta y filtra la primera fila, cuyo previous_efficiency (y, por lo tanto, efficiency_difference) está vacía, es decir, es NULL:
SELECT * FROM (
-- Your query here
)
WHERE previous_efficiency IS NOT NULLPrué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
4Más palabras clave
La palabra clave INLa palabra clave BETWEENLa palabra clave LIKELa palabra clave ASRepaso: modelos de celulares2Condiciones
Conceptos básicos de las condicionesLa palabra clave ANDLa palabra clave ORLa palabra clave NOTCombinación de múltiples condicionesParéntesisBooleanos5Operaciones aritméticas
Operadores matemáticosColumnas matemáticasLa operación móduloLa función ROUND()8Estadística
Agregación integrada, parte 1Agregación integrada, parte 2Agrupación, parte 1Agrupación, parte 2Subconsultas, parte 1Subconsultas, parte 2Repaso: tienda de ganancias totalesRepaso: tienda de scootersRepaso: cafetería11Funciones de ventana, parte 1
Función ROW_NUMBERCriterio ORDER BYCriterio PARTITION BYPARTITION y ORDERFunciones LEAD y LAGRepaso: LEAD y LAGRepaso: imágenesRepaso: cuadros3Formato de retorno específico
Valores nulosOrdenar resultados, parte 1Ordenar resultados, parte 2Repaso: empresa de ciberseguridadLimitar el número de registrosRepaso: fábrica de vehículos6Desafíos introductorios
Repaso - Elección parlamentariaRepaso - Detención policial de un criminalRepaso - Recipiente de bebida de barRepaso - Ingeniería de nuevas columnas9Múltiples tablas
Unión básica, parte 1Unión básica, parte 2Repaso: uniónAutouniónRepaso: autouniónUniónSimplificar consultas, palabra clave WITHRepaso: consultas WITHRepaso: contratista inmobiliario12Funciones de ventana, parte 2
Funciones RANK y DENSE_RANKRepaso: RANK y DENSE_RANKFunción NTILEFunciones de agregaciónCriterio ROWS y RANGEPractica por tu cuenta: Playground de SQL