我有一张表,其中包含的分数等于百分等级。这是表中的一个片段,可以让您了解结构:
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.由于得分可以是任何小数值,我需要考虑给定百分位数的范围。因此,我在以有效的方式解决这个问题时遇到了一些麻烦。
答案 0 :(得分:2)
根据您的示例,top
或max
查询会根据您的输入提供最接近的匹配:
select top 1 percentileRank
from tbl
where score <= @score
order by score desc;
select max(percentileRank)
from tbl
where score <= @score;