PERCENT_RANK
Возвращает относительный ранг строки в разделе окна — долю строк, которые стоят перед ней, от 0 до 1.
PostgreSQL 17.5
PERCENT_RANK() OVER ([PARTITION BY ...] [ORDER BY ...])Параметры
- PARTITION BYнеобязательный
- Столбцы, по которым строки делятся на разделы, ранги считаются в каждом отдельно
- ORDER BYнеобязательный
- Порядок строк, по которому определяется ранг
Возвращаемое значение
Дробное число (double precision) от 0 до 1
Примеры
Относительный ранг по дате рождения
PostgreSQL 17.5
SELECT member_name,
birthday,
PERCENT_RANK() OVER (
ORDER BY birthday
) AS pct_rank
FROM FamilyMembers;RANK и PERCENT_RANK для цен
PostgreSQL 17.5
SELECT unit_price,
RANK() OVER (
ORDER BY unit_price
) AS price_rank,
ROUND(
PERCENT_RANK() OVER (
ORDER BY unit_price
)::numeric,
2
) AS pct_rank
FROM Payments
ORDER BY unit_price;Подробности
Считается как (RANK − 1) / (число строк раздела − 1). Одинаковые значения получают одинаковый ранг. У раздела из одной строки результат 0.