Retrasar postgresql

Retrasar postgresql

La función de retraso postgreSQL () se usa para acceder a la fila en la tabla que está presente antes de la fila actual de la tabla. Como el nombre indica que se queda atrás de la fila actual y toma el registro de la tabla. En PostgreSQL, la función de retraso es importante para que compara las filas anteriores con la fila actual.

Esta función es adecuada para conocer los datos que ingresó anteriormente, pero están presentes en la fila actual. Entonces puede acceder a los datos del pasado. Abra PSQL, y después de proporcionar una contraseña, ahora puede aplicar todos los comandos en el shell de PSQL.

Sintaxis

Lag (expresión [offset [valor]])
ENCIMA (
[Partición por expresión, ...]
Orden por expresión [ASC | Desc], ..
)

Un desplazamiento es un número entero establecido en la consulta y muestra el número de filas presentes sobre la fila actual. Puede ser una subconsulta o una expresión.

La función de retraso se aplica a la partición de valor, que se crea principalmente por una cláusula de partición. Al mismo tiempo, el orden por cláusula se usa para organizar las filas en un orden especificado.

Hay dos características principales de la función de retraso que hemos descrito aquí son:

  • Partición predeterminada de retraso
  • La función de retraso en las particiones.

Partición predeterminada de retraso

Tenemos una tabla llamada "sala de exposición" que tiene los detalles de los vehículos. La tabla es creada por la consulta "Crear tabla" en PSQL y agregando los datos utilizando una instrucción "Insertar".

>> seleccionar * de la sala de exposición;

Aplicaremos la función de retraso en la mesa. La función de retraso contiene dos o más declaraciones de "selección". Como tenemos que seleccionar el valor antes de la fila actual, la fila actual se selecciona en el primer paso y luego la fila antes.

Ejemplo 1

En este ejemplo, seleccionaremos una columna de la tabla y calcularemos la suma de la columna de precios. La segunda instrucción Seleccionar usará la función LAG. Ambas declaraciones usan la cláusula "Orden por" con "Grupo por" en la función agregada de SELECT. Como ningún año es similar al otro, así se mostrarán todas las filas. No habrá agrupación. Ahora aplicamos el comando sobre la tabla:

>> con CTE AS (año seleccionado, suma (precio) Precio de Showroom Group por año Pedido por año) Seleccionar año, precio, retraso (precio, 1) sobre (pedido por año) anterior_year_discount de CTE;

Para imprimir el valor de la fila anterior a la fila actual, primero tenemos acceso a la fila actual a través de la instrucción SELECT y hemos calculado la función de suma. El valor obtenido se almacena en "CTE" para su uso posterior en la última consulta. El valor resultante será ordenado y agrupado por la columna "año".

Moviéndose hacia la segunda declaración de selección, se seleccionan las mismas columnas en "CTE" de la tabla. Se crea una columna adicional con el nombre "Anterior_year_discount" que tiene un retraso con 1 fila. Y las filas de la columna resultante deben estar organizadas por la columna del año.

Puede ver en la tabla obtenida que la primera fila en la nueva columna está en blanco. Porque el precio se transfiere a la siguiente fila desde el principio haciendo que la primera fila sea nula.

Ejemplo 2

Hay otro ejemplo; Aquí, estamos utilizando tres declaraciones selectas. "CTE" y "Cye" se utilizan para almacenar los valores que se obtienen de las dos consultas utilizando la instrucción "SELECT", y sus valores resultantes se utilizarán en la tercera instrucción SELECT. La salida de "CTE" actúa como una salida para "CTE2". Del mismo modo, "CTE2" será la entrada para la tercera declaración de selección. Todos los valores se muestran en la tabla resultante combinada porque un resultado es una función de retraso, mientras que la segunda columna resultante muestra la diferencia entre los dos valores de retraso.

Avanzar hacia el primer "CTE" calcula la misma función que el ejemplo anterior. La suma se calcula a partir de la columna "Precio".

>> con CTE AS (año selecto, precio (precio) Precio de Showroom Group por año Pedido por año),

El segundo "CTE2" es similar al segundo comando de selección porque sabemos que la función de retraso se aplica en la suma de la columna "precio". La columna de esa suma "anterior_year_discount" se almacena como está en CTE.

>> cte2 como (año seleccionado, precio, retraso (precio, 1) sobre (ordenar por año) anterior_year_discount de CTE)

La tercera declaración "select" tomará la suma de precios retrasada y calculará su diferencia. Por ejemplo, el precio en la tercera fila resta el valor en la segunda fila. Al mismo tiempo, la primera fila es nula debido a la función de retraso.

>> Seleccionar año, precio, anterior_year_discount, (anterior_year_discount - precio) diferencia de cte;

La cuarta columna se nombra la diferencia porque usa el operador menos para restar los valores en la tercera columna.

Para cada fila, el valor de la tercera columna se resta de la fila anterior. Por ejemplo (3rd -2nd), (4º -3), y así sucesivamente. Y el valor restado se escribe frente al primer valor (restado del siguiente valor). Pero en el sexto, la última fila en la columna "diferencia", la respuesta se escribe que se obtiene restando la primera fila de la segunda fila, el valor del año 2021.

Ejemplo 3

Considere otro ejemplo en el que se aplica el mismo concepto a la tabla. Pero el retraso es 2 en lugar de uno. Una sola instrucción selecta muestra los precios, no la suma o cualquier otra función agregada.

>> Seleccionar año, precio, retraso (precio, 2) sobre (pedido por año) descuento de la sala de exposición;

El valor resultante muestra que el precio en la columna de descuento se desplaza dos filas hacia abajo. Significa que hemos accedido a las filas antes de la fila actual de la tabla.

Función de retraso en las particiones

A través de pgadmin

En pgadmin, después de proporcionar la contraseña, ahora puede acceder a la base de datos y todo el contenido presente en ella. Vaya a la herramienta de consulta de las tablas. Ahora cree nuevos nombres de tabla "Team_Members".

>> Crear tabla team_members (nombre varchar (100), id int, año entero, entero salarial);

Después de crear la tabla, ahora agregue valores a la tabla.

>> Insertar en Team_Members (nombre, ID, año, salario) Valores ('Salar', 1, 2018, 180000);

Después de insertar los valores, ahora aplique la consulta.

La función lag () en este tipo compara el salario de un año con el último año de cada grupo.

>> Seleccionar año, salario, identificación, retraso (salario, 1) sobre partición por identificación (orden por año) descuento de team_members;

En este ejemplo, los ID se agrupan colectivamente. La partición distribuirá las filas al grupo, como puede ver que las mismas ID están presentes juntas. Y la columna de descuento muestra la comparación del salario de una fila con la segunda fila, que tiene el retraso de 1.

Conclusión

La "función de retraso" se usa para obtener el registro que ha ingresado antes de la fila actual que ha seleccionado. Dos categorías principales de la función de retraso se discuten aquí con ejemplos. Seleccione, el pedido se usa además de la "Partición por cláusula". Esta función en PostgreSQL se puede aplicar dentro de la tabla y luego aplicar diferentes operaciones en ellas.