logo

Función SQL LAG()

La función SQL LAG() es una función de ventana que proporciona acceso a una fila en un desplazamiento físico específico que viene antes de la fila actual .

Función LAG en SQL Server se usa para compare los valores de la fila actual con los valores de la fila anterior.



Sintaxis

El Sintaxis de la función LAG es:

.LAG (expresión_escalar [, desplazamiento [, predeterminado]]) OVER ([partición_por_cláusula] orden_por_cláusula)

Dónde :



  • expresión_escalar – El valor que se devolverá en función del desplazamiento especificado.
  • compensar - El número de filas posteriores a la fila actual de las que se obtiene un valor. Si no se especifica, el valor predeterminado es 1.
  • por defecto - El valor predeterminado es el valor que se devolverá si el desplazamiento va más allá del alcance de la partición. Si no se especifica un valor predeterminado, se devuelve NULL.
  • partición_por_cláusula: Una cláusula opcional que divide el conjunto de resultados en particiones. La función LAG() se aplica a cada partición por separado.
  • orden_por_cláusula: El orden de las filas dentro de cada partición. Esto es obligatorio y debe especificarse.

Ejemplo de función SQL LAG()

Veamos algunos ejemplos de la función LAG de SQL y comprendamos cómo usar la función LAG en SQL Server.

Ejemplo 1

  SELECT   Organisation, [Year], Revenue,   LAG   (Revenue, 1, 0)    OVER   (  PARTITION BY   Organisation   ORDER BY   [Year])   AS   PrevYearRevenue    FROM   Org    ORDER BY   Organisation, [Year];>

Producción:

Organización Año Ganancia AnteriorAñoIngresos
ABCD Noticias 2013 440000 0
ABCD Noticias 2014 480000 440000
ABCD Noticias 2015 490000 480000
ABCD Noticias 2016 500000 490000
ABCD Noticias 2017 520000 500000
ABCD Noticias 2018 525000 520000
ABCD Noticias 2019 540000 525000
ABCD Noticias 2020 550000 540000
Noticias Z 2016 720000 0
Noticias Z 2017 750000 720000
Noticias Z 2018 780000 750000
Noticias Z 2019 880000 780000
Noticias Z 2020 910000 880000

En el ejemplo anterior, tenemos 2 canales de noticias de televisión cuyos ingresos del año actual y anterior se presentan en la misma fila usando la función LAG(). Como puede ver, el primer registro de cada uno de los canales de noticias de TV no tiene ingresos del año anterior, por lo que muestra el valor predeterminado de 0. Esta función puede ser muy útil para generar datos para informes de BI cuando desee comparar valores. en períodos consecutivos, por ej. Comparaciones año tras año o trimestre tras trimestre o diarias.



Ejemplo 2

  SELECT   Z.*, (Z.Revenue - z.PrevYearRevenue) as YearonYearGrowth   FROM   (SELECT Organisation, [Year], Revenue,    LAG   (Revenue, 1)     OVER   (  PARTITION BY   Organisation   ORDER BY   [Year] )   AS   PrevYearRevenue     FROM   Org) Z   ORDER BY   Organisation, [Year];>

Producción:

Organización Año Ganancia AnteriorAñoIngresos Año tras añoCrecimiento
ABCD Noticias 2013 440000 NULO NULO
ABCD Noticias 2014 480000 440000 40000
ABCD Noticias 2015 490000 480000 10000
ABCD Noticias 2016 500000 490000 10000
ABCD Noticias 2017 520000 500000 20000
ABCD Noticias 2018 525000 520000 5000
ABCD Noticias 2019 540000 525000 15000
ABCD Noticias 2020 550000 540000 10000
Noticias Z 2016 720000 NULO NULO
Noticias Z 2017 750000 720000 30000
Noticias Z 2018 780000 750000 30000
Noticias Z 2019 880000 780000 100000
Noticias Z 2020 910000 880000 30000

En el ejemplo anterior, podemos calcular de manera similar el crecimiento año tras año para el canal de noticias de televisión. Además, una cosa a tener en cuenta en este ejemplo es que no hemos proporcionado ningún parámetro predeterminado a LAG() y, por lo tanto, la función LAG() devuelve NULL en caso de que no haya valores anteriores. La función LAG() se puede implementar a nivel de base de datos y las soluciones de informes de BI como Power BI y Tableau pueden evitar el uso de medidas engorrosas en la capa de informes.

Puntos importantes sobre la función SQL LAG()

  • La función SQL LAG() es una función de ventana que permite a los usuarios acceder a datos de filas anteriores en un conjunto de datos.
  • Permite a los usuarios comparar los valores de las filas actuales con los valores de filas anteriores, especialmente aquellos relacionados con el tiempo o columnas específicas.
  • La función LAG() es valiosa para analizar cambios a lo largo del tiempo, como datos del mercado de valores, tendencias diarias y alteraciones en varias columnas.