我认为这将是最简单的解决方案:
SELECT TOP N PERCENT FROM TheTable ORDER BY TheScore DESC
其中N =(100 - 期望百分位数).因此,如果您希望所有行都在第90个百分位,那么您将选择前10%.
我不确定你的意思是"最好是在一张唱片中".你的意思是计算单个记录的给定分数会落入哪个百分位数?例如,您是否希望能够发表"您的分数为83,这使您处于第91百分位数"的陈述.?
编辑:好的,我想到了更多关于你的问题,并想出了这个解释.您是否在询问如何计算特定百分位数的截止分数?例如:像这样:要达到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命令 - 它会非常容易地为您提供百分位数!
SELECT SalesOrderID, OrderQty, RowNum = Row_Number() OVER(Order By OrderQty), Rnk = RANK() OVER(ORDER BY OrderQty), DenseRnk = DENSE_RANK() OVER(ORDER BY OrderQty), NTile4 = NTILE(4) OVER(ORDER BY OrderQty) FROM Sales.SalesOrderDetail WHERE SalesOrderID IN (43689, 63181)