当前位置:  开发笔记 > 编程语言 > 正文

计算MS SQL中的百分位数排名

如何解决《计算MSSQL中的百分位数排名》经验,为你挑选了2个好方法。



1> Matt..:

我认为这将是最简单的解决方案:

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



2> 小智..:

查看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)

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有