Saltar al contenido principal
Página traducida

Esta página se tradujo del inglés con ayuda de IA. Si hay diferencias entre ambas, la versión en inglés es la referencia.

LAG

Devuelve el resultado de evaluar una expresión sobre una fila anterior de la partición.

La primera forma de LAG() devuelve el resultado de evaluar la expresión sobre la fila anterior de la partición. O bien, si no hay fila anterior (porque la fila actual es la primera), se devuelve NULL.

Si se proporciona el argumento offset, debe ser un entero no negativo. El valor devuelto es el resultado de evaluar la expresión sobre la fila situada offset filas antes de la fila actual dentro de la partición. Si offset es 0, la expresión se evalúa sobre la fila actual. Si no hay ninguna fila situada offset filas antes de la fila actual, se devuelve NULL.

Si también se proporciona un valor predeterminado, se devuelve este en lugar de NULL cuando la fila identificada por offset no existe.

Consulte también: [SELECT] [LEAD]


Sintaxis​

SELECT LAG(expr) OVER ([PARTITION BY column] ORDER BY column) FROM <multipartIdentifier>;

SELECT LAG(expr, offset) OVER ([PARTITION BY column] ORDER BY column) FROM <multipartIdentifier>;

SELECT LAG(expr, offset, default) OVER ([PARTITION BY column] ORDER BY column) FROM <multipartIdentifier>;

Argumentos​

expr La expresión que se evalúa sobre la fila anterior.

offset Opcional. Un entero no negativo que especifica cuántas filas hacia atrás se debe buscar. Valor predeterminado: 1.

default Opcional. El valor que se devuelve si la fila indicada por el desplazamiento no existe. Valor predeterminado: NULL.

PARTITION BY column Opcional. Divide el conjunto de resultados en particiones. La función LAG se aplica dentro de cada partición por separado.

ORDER BY column Especifica el orden en que se procesan las filas.

Valor(es) devuelto(s)​

Devuelve el valor de la expresión evaluada sobre la fila anterior especificada, o NULL (o el valor predeterminado) si esa fila no existe.


Ejemplos​

Comparar cada versión con la versión anterior​

-- Compare each release to previous and next release dates
SELECT
tag_name,
name,
published_at,
LAG(tag_name, 1) OVER (ORDER BY published_at) as previous_release,
LAG(published_at, 1) OVER (ORDER BY published_at) as previous_release_date,
julianday(published_at) - julianday(LAG(published_at, 1) OVER (ORDER BY published_at)) as days_since_last_release
FROM github.repos.releases
WHERE owner = 'stackql'
AND repo = 'stackql'
ORDER BY published_at;

Analizar los intervalos entre la creación de issues​

-- Analyze gaps between issue creation
SELECT
number,
title,
created_at,
LAG(created_at, 1) OVER (ORDER BY created_at) as prev_issue_date,
julianday(created_at) - julianday(LAG(created_at, 1) OVER (ORDER BY created_at)) as days_since_prev_issue
FROM github.issues.issues
WHERE owner = 'stackql'
AND repo = 'stackql'
ORDER BY created_at;

Para obtener más información, consulte https://sqlite.org/windowfunctions.html#built-in_window_functions.