Referencia de funciones

RANK

Devuelve el rango de una fila en la partición de la ventana, es decir, su puesto en el orden de ORDER BY.

PostgreSQL 17.9
RANK()

Valor devuelto

Número entero (bigint), el puesto de la fila; los valores iguales comparten puesto y los siguientes se saltan: 1, 2, 2, 4

Ejemplos

Rango por estado con huecos

PostgreSQL 17.9
SELECT member_name,
	status,
	RANK() OVER (
		ORDER BY status
	) AS status_rank
FROM FamilyMembers;
member_namestatusstatus_rank
Wednesday Addamsdaughter1
Lela Quinceydaughter1
Annie Quinceydaughter1
Headley Quinceyfather4
Ernest Forrestfather4
Constance Forrestmother6
Flavia Quinceymother6
Andie Quinceyson8

Puestos por precio de cada miembro de la familia

PostgreSQL 17.9
SELECT family_member,
	unit_price,
	RANK() OVER (
		PARTITION BY family_member
		ORDER BY unit_price DESC
	) AS price_rank
FROM Payments
ORDER BY family_member,
	price_rank;
family_memberunit_priceprice_rank
1100001
120002
13003
1104
185
185
177
177
2660001
255002

Detalles

Sin ORDER BY, todas las filas de la partición reciben el rango 1. Las funciones de ventana no funcionan en WHERE: para elegir los primeros puestos, calcula el rango en una subconsulta y filtra en la consulta externa.

Véase también

Dónde aprenderlo