[Отредактировано, чтобы соответствовать комментариям в вопросе]:
SELECT Number, 100 * (ROW_NUMBER() OVER (ORDER BY Number))/Count(*) AS Percentile
FROM MyTable
Тогда, если ваши Number
с 2, 5, 10 и 14, вы должны получить:
Number Percentile
2 25
5 50
10 75
14 100
Вот проблема: если есть дубликаты, то ROW_NUMBER облажает вас.Если ваши Number
s равны 2, 5, 5 и 14, приведенный выше код даст вам:
Number Percentile
2 25
5 50
5 75
14 100
Итак ... сделайте это вместо этого.
SELECT Number, MAX(100 * (ROW_NUMBER() OVER (ORDER BY Number))/Count(*)) AS Percentile
FROM MyTable
GROUP BY Number
Есливаши номера 2, 5, 5, 14, он должен вернуть
Number Percentile
2 25
5 75
14 100