Я искал решение для этого для клиентского проекта, который все еще был на SQL Server 2005. Поскольку NTILE просто делит доступные строки на группы, вы никогда не получите более 6 с 6 строками. Если вы хотите разложить их, чтобы они выглядели как процентили (например: 16, 33, 50, 66, 83, 100)
Вы можете сделать следующее. Обратите внимание, что вы не обязательно наберете 95 точно, поэтому вам нужно запросить ближайшее значение:
SELECT TOP 1 val, Quantile
FROM
(
SELECT val, CAST (ROW_NUMBER() OVER (ORDER BY val) * 100.0 / COUNT(*) OVER() AS INT) AS Quantile
FROM #Temp
) A
WHERE Quantile >= 95
ORDER BY Quantile