DENSE_RANK
Devuelve el rango de una fila en la partición de la ventana, como RANK, pero sin huecos entre los puestos.
PostgreSQL 17.9
DENSE_RANK()Valor devuelto
Número entero (bigint), el puesto de la fila; los valores iguales comparten puesto y el siguiente es una unidad mayor: 1, 2, 2, 3
Ejemplos
DENSE_RANK y RANK por estado
PostgreSQL 17.9
SELECT member_name,
status,
RANK() OVER (
ORDER BY status
) AS status_rank,
DENSE_RANK() OVER (
ORDER BY status
) AS status_dense_rank
FROM FamilyMembers;Los tres precios más altos
PostgreSQL 17.9
SELECT good,
unit_price,
price_rank
FROM (
SELECT good,
unit_price,
DENSE_RANK() OVER (
ORDER BY unit_price DESC
) AS price_rank
FROM Payments
) AS ranked
WHERE price_rank <= 3;Detalles
La función sirve para elegir los N valores más grandes incluidos los empates: los valores iguales comparten puesto y los siguientes puestos no se saltan. Filtra por el rango en la consulta externa, porque las funciones de ventana no funcionan en WHERE.