Я хотел бы получить значение PERCENT_RANK
для одной записи, но по отношению ко всей таблице. Возможно ли это?
Примеры, которые я видел, выглядят так:
SELECT Name, Salary
PERCENT_RANK() OVER (ORDER BY Salary)
FROM Employees
Обратите внимание, что он вычисляет процентиль для возвращенного набора записей . Если вы возвращаете весь стол, это здорово. Но если вы возвращаете подмножество, то вы получите только процентиль для строки в возвращенном наборе записей , когда я хочу его для всей таблицы (для группы строк I не возврат).
Док говорит это:
Вычисляет относительный ранг строки в группе строк
Это не то, что я хочу. По сути, я хочу сделать это (примечание: это нерабочий код):
SELECT Name, Salary
PERCENT_RANK() OVER (SELECT * FROM Employees ORDER BY Salary)
FROM Employees
Итак, я хочу сказать: «Дайте мне процентиль этой записи по сравнению со всей таблицей ».
В приведенном выше случае это одно и то же, потому что я получаю всю таблицу. Но я не могу вытащить ни одной записи и получить ее процентиль для таблицы в целом.
SELECT Name, Salary
PERCENT_RANK() OVER (ORDER BY Salary)
FROM Employees
WHERE id = 1234
Эта одна запись всегда будет 1.000
, потому что она находится на 100% -ном процентиле для всех возвращаемых строк, а это только одна.