FirebirdSQL logo

RANK()

Доступно в

DSQL

Синтаксис
RANK() OVER {<window_specification> | window_name}
Тип возвращаемого результата

BIGINT

Возвращает ранг каждой строки в секции результирующего набора.Строки с одинаковыми значениями <order_exp> получают одинаковый ранг в пределах группы <partition_exp>, если она указана.Ранг строки вычисляется как единица плюс количество рангов, находящихся до этой строки.

Example 1. Использование RANK
SELECT
  id,
  salary,
  RANK() OVER (ORDER BY salary)
FROM employee
ORDER BY salary;
Результат
id salary rank
-- ------ ------
3    8.00      1
4    9.00      2
1   10.00      3
5   10.00      3
2   12.00      5

PERCENT_RANK()

Доступно в

DSQL

Синтаксис
PERCENT_RANK() OVER {<window_specification> | window_name}
Тип возвращаемого результата

DOUBLE PRECISION

Возвращает относительный ранг текущей строки в группе строк.Функция PERCENT_RANK используется для вычисления относительного положения значения в секции или результирующем наборе запроса.Диапазон значений, возвращаемый функцией PERCENT_RANK, больше 0 и меньше или равен 1.В первой строке любого набора PERCENT_RANK равна 0.Значения NULL по умолчанию включаются и рассматриваются как наименьшие возможные значения.

Note

Функция PERNCENT RANK вычисляется как (RANK-1)/(total_rows - 1), где total_rows общее количество строк в секции.

Example 1. Использование PERNCENT RANK
SELECT
  id,
  salary,
  PERCENT_RANK() OVER (ORDER BY salary)
FROM employee
ORDER BY salary;
Результат
id salary percent_rank
-- ------ ------------
3    8.00          0.0
4    9.00         0.25
1   10.00          0.5
5   10.00          0.5
2   12.00          1.0