根据得分SQL从表中选择百分等级

时间:2015-02-25 15:27:08

标签: sql sql-server

我有一张表,其中包含的分数等于百分等级。这是表中的一个片段,可以让您了解结构:

dateStart   dateEnd     category    score   percentileRank
2014-10-01  2014-12-31  category1   81.5    97.0
2014-10-01  2014-12-31  category1   80.7    96.0
2014-10-01  2014-12-31  category1   80.0    95.0
2014-10-01  2014-12-31  category1   79.5    94.0
2014-10-01  2014-12-31  category1   79.0    93.0
2014-10-01  2014-12-31  category1   78.6    92.0
2014-10-01  2014-12-31  category1   78.1    91.0
2014-10-01  2014-12-31  category1   77.8    90.0
2014-10-01  2014-12-31  category1   77.6    89.0
2014-10-01  2014-12-31  category1   77.3    88.0
...         ...         ...         ...     ...

我如何基于给定的SELECT percentileRank score?例如,如果得分为81,则应该告诉我百分等级为96.由于得分可以是任何小数值,我需要考虑给定百分位数的范围。因此,我在以有效的方式解决这个问题时遇到了一些麻烦。

1 个答案:

答案 0 :(得分:2)

根据您的示例,topmax查询会根据您的输入提供最接近的匹配:

select top 1 percentileRank
from tbl
where score <= @score
order by score desc;

select max(percentileRank)
from tbl
where score <= @score;