Я бы думать, что это было бы самым простым решением:
SELECT TOP N PERCENT FROM TheTable ORDER BY TheScore DESC
где N = (100 - желательная процентиль). Поэтому, если вам нужны все строки в 90-м процентиле, вы должны выбрать 10% лучших.
Я не уверен, что вы подразумеваете под «предпочтительно в одной записи». Вы имеете в виду подсчитать, какой процентный показатель для одной записи упадет? например вы хотите, чтобы у вас были такие заявления, как «ваш счет - 83, что ставит вас в 91-й процентиль». ?
EDIT: Хорошо, я подумал о вашем вопросе и придумал эту интерпретацию. Вы спрашиваете, как рассчитать показатель отсечки для определенного процентиля? например что-то вроде этого: чтобы быть в 90-м процентиле, вы должны иметь счет больше 78.
Если это так, этот запрос работает. Однако мне не нравятся подзапросы, поэтому, в зависимости от того, для чего это было, я, вероятно, попытаюсь найти более элегантное решение. Тем не менее, он возвращает одну запись с одним счетом.
-- Find the minimum score for all scores in the 90th percentile
SELECT Min(subq.TheScore) FROM
(SELECT TOP 10 PERCENT TheScore FROM TheTable
ORDER BY TheScore DESC) AS subq
За исключением NTILE не дает процентили ... – 2013-10-24 02:40:57