Blog de Gonzalo

Blog de programación de Gonzalo López

FUNCIÓN LAG EN MYSQL

MYSQL

La función lag de mysql se utiliza para obtener el valor anterior de la fila actual, es una función ventana. La función lag siempre se utiliza con over. Si no se incluye la cláusula over, se producirá un error. Ejemplo de la query:


SELECT 
  sales_employee, 
  fiscal_year, 
  sale, 
  LAG(sale, 1 , 0) OVER (
    PARTITION BY sales_employee 
    ORDER BY fiscal_year
  ) 'previous_year_sale' 
FROM 
  sales;
Una vez vista la query un ejemplo de la salida sería (dependiendo de los datos de la bd):

//La columna "previous_year_sale" sería el resultado de la función lead
+----------------+-------------+--------+--------------------+
| sales_employee | fiscal_year | sale   | previous_year_sale |
+----------------+-------------+--------+--------------------+
| Alice          |        2016 | 150.00 |               0.00 |
| Alice          |        2017 | 100.00 |             150.00 |
| Alice          |        2018 | 200.00 |             100.00 |
| Bob            |        2016 | 100.00 |               0.00 |
| Bob            |        2017 | 150.00 |             100.00 |
| Bob            |        2018 | 200.00 |             150.00 |
| John           |        2016 | 200.00 |               0.00 |
| John           |        2017 | 150.00 |             200.00 |
| John           |        2018 | 250.00 |             150.00 |
+----------------+-------------+--------+--------------------+

En el ejemplo anterior los datos están ordenados por nombre y hay que fijarse en el año.

Compartir en twitter