Función de retraso de SQL

Función de retraso de SQL

La función de retraso en SQL le permite obtener la fila anterior en un desplazamiento específico desde la fila actual. Esto significa que puede acceder a la fila anterior desde la fila actual. También puede especificar un desplazamiento particular para acceder al segundo, tercero, y así en la fila anterior.

Discutamos cómo podemos usar la función de retraso en SQL.

Sintaxis de funciones

La sintaxis de la función es como se muestra:

Lag (Scalar_Expression [, offset] [, predeterminado])
Over ([Partition_by] Order_by);

Los parámetros de la función se expresan como se muestra a continuación:

  1. Scalar_Expression - se refiere al valor de retorno basado en un desplazamiento especificado de la fila actual.
  2. Compensar - Define el número de elementos anteriores de la fila actual desde los cuales acceder a los valores. Por defecto, SQL utilizará un valor de compensación de 1.
  3. Por defecto - Establece el valor predeterminado si el valor de desplazamiento está más allá del alcance de la partición. El valor predeterminado es nulo.
  4. Dividir por - Participa los datos en una o más particiones dependiendo de la condición especificada.
  5. Ordenar - expresión para ordenar los datos en cada partición.

Ejemplo 1

Supongamos que tenemos una tabla que contiene datos de empleados como se muestra:

Para obtener los nombres de los empleados actuales y anteriores, podemos ejecutar la consulta como se muestra:

Seleccione FULL_NAME, LAG (FULL_NAME)
Over (Partition by Category Order por ID) como PREV_EMP
De los empleados;

El código anterior debe devolver los nombres de los empleados actuales y anteriores en cada partición.

La salida es como se muestra:

Ejemplo 2

Si no hay una fila anterior en la partición, la función devolverá nulo. Si queremos establecer un valor para las filas inexistentes, podemos establecer el parámetro predeterminado como se muestra:

Seleccione Full_Name, LAG (Full_Name, 1, 'Persona faltante')
Over (Partition by Category Order por ID) como PREV_EMP
De los empleados;

Esto debería reemplazar los valores nulos con 'Persona faltante.'La salida se mostrará a continuación:

Ejemplo 3

Supongamos que queremos acceder a dos filas hacia atrás desde la fila actual? Podemos hacerlo especificando el desplazamiento como se muestra:

Seleccione Full_Name, LAG (Full_Name, 2, 'N/A')
Over (Partition by Category Order por ID) como PREV_EMP
De los empleados;

La consulta anterior debe volver a dos filas y seleccionar su valor.

Producción:

Conclusión

En este artículo, aprendió cómo usar la función SQL Lag () para acceder a la fila anterior desde la fila actual.

Gracias por leer!!