具有多个指标的百分位数排名

时间:2018-04-12 06:03:29

标签: sql sql-server-2008

我希望使用百分位排名使用多个指标对一些记录(ASX股票)进行排名。我使用以下网站来计算百分等级,这对我来说很好。

http://www.sqlservercentral.com/articles/PERCENT_RANK/141532/

比方说,例如,我想按最高收益,最​​低债务与股本比率对它们进行排名(我的排名可能超过5个指标)。假设我希望最高收益具有更高的重要性,比如20%

我是否需要单独计算每个/公制的百分位数排名,然后将两个百分比结合起来并应用20%因子?

所以例如: ABC 收益百分位数:90%(最高收入者之一) 债务百分位数:10%(债务水平高)

然后将90%与10%相结合以获得整体排名?

; WITH CTE

AS
(
select
    e.SecurityCode,
    e.Earning,
    e.TotalDebtToEquity,
    rk1 = RANK() OVER (ORDER BY e.Earning),
    rk2 = RANK() OVER (ORDER BY e.TotalDebtToEquity),
    NR = COUNT(*) OVER ()
from Earning e 


SELECT
    SecurityCode,
    Earning,
    TotalDebtToEquity,
    PercentileEarningRank = ROUND((1.0*(rk1 - 1)/(nr-1))*100.00, 2),
    TotalDebtToEquity = ROUND((1.0*(rk2 - 1)/(nr-1))*100.00, 2)
FROM CTE

1 个答案:

答案 0 :(得分:2)

你想要的是加权平均值。如果所有变量(比如有5个称为a,b,c,d和e)具有相同的重要性,那么你只需计算:

out = (a+b+c+d+e)/5;

但是如果你希望a比其他所有东西重20%,你就会计算

out = (1.2*a+b+c+d+e)/5.2;

注意除数必须改变才能使结果回到0-100范围内(基本上除数是各个系数的总和,在这种情况下1.2 + 1 + 1 + 1 + 1 = 5.2)。