Referencia de funciones

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 LEAD
integerOpcional
default
Valor del tipo de column si no hay fila con ese desplazamiento; NULL por defecto
Opcional

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;
member_namebirthdayprevious_membertwo_rows_back
Headley Quincey1960-05-13<NULL>none
Ernest Forrest1961-09-11Headley Quinceynone
Flavia Quincey1963-02-16Ernest ForrestHeadley Quincey
Constance Forrest1968-09-06Flavia QuinceyErnest Forrest
Andie Quincey1983-06-05Constance ForrestFlavia Quincey
Lela Quincey1985-06-07Andie QuinceyConstance Forrest
Annie Quincey1988-04-10Lela QuinceyAndie Quincey
Wednesday Addams2005-01-13Annie QuinceyLela Quincey

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;
family_memberdateprevious_datesince_previous
12005-02-03<NULL><NULL>
12005-02-122005-02-039 days
12005-03-112005-02-1227 days
12005-04-202005-03-1140 days
12005-05-132005-04-2023 days
12005-06-052005-05-1323 days
12006-01-152005-06-05224 days
12006-03-122006-01-1556 days
22005-03-18<NULL><NULL>
22005-03-232005-03-185 days

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.

Véase también

Dónde aprenderlo