LAG
Devuelve el valor de la fila que está offset filas antes de la actual en la partición de la ventana.
PostgreSQL 17.9
LAG(column[, offset[, default]])- [ ]parte opcional
- column
- Columna o expresión cuyo valor se toma de la fila anterior
- offset
- Cuántas filas hacia atrás, 1 por defecto; un valor negativo mira hacia delante, como LEADintegerOpcional
- default
- Valor del tipo de column si no hay fila con ese desplazamiento; NULL por defectoOpcional
Valor devuelto
Valor del tipo de column; default o NULL si no hay fila con ese desplazamiento, por ejemplo en la primera fila de una partición
Ejemplos
Una y dos filas hacia atrás
PostgreSQL 17.9
SELECT member_name,
birthday,
LAG(member_name) OVER (
ORDER BY birthday
) AS previous_member,
LAG(member_name, 2, 'none') OVER (
ORDER BY birthday
) AS two_rows_back
FROM FamilyMembers;Tiempo desde la compra anterior
PostgreSQL 17.9
SELECT family_member,
date,
LAG(date) OVER (
PARTITION BY family_member
ORDER BY date
) AS previous_date,
date - LAG(date) OVER (
PARTITION BY family_member
ORDER BY date
) AS since_previous
FROM Payments
ORDER BY family_member,
date;Detalles
La diferencia con la fila anterior es column - LAG(column) OVER (...): para la primera fila de una partición es NULL. default tiene que ser del mismo tipo que column.