首页 > 解决方案 > 您可以根据多个标准在 SQL 中创建百分位排名吗?

问题描述

我正在尝试根据客户的财务状况创建一个百分位排名。财务分数从 0 到 1000。这会创建一个百分位数,

  SELECT AccountID, FirstName, LastName, FinancialScore,
     PERCENT_RANK() OVER(
     ORDER BY FinancialScore) AS PctRank
  FROM CustomerTable
  ORDER BY Financial DESC


AccountID  FirstName LastName FinancialScore  Income Score    Rank
1          John       Doe      900            4510
2          Jane       Doe      345            1000            

但我想知道我是否可以让百分位数考虑多种财务状况指标,范围不是 0-1000?

编辑:我也刚刚注意到百分位排名仅基于前 2 个数字的排名(例如 99 高于 970)?

标签: sqlsql-server

解决方案


不是 100% 清楚预期的结果,但您可以对财务和收入分数的乘积进行排名……这些也可以加权

例子

Declare @YourTable Table ([AccountID] varchar(50),[FirstName] varchar(50),[LastName] varchar(50),[FinancialScore] varchar(50),[Income Score] varchar(50))  Insert Into @YourTable Values 
 (1,'John','Doe',900,4510)
,(2,'Jane','Doe',345,1000)

Select * 
      ,Ranked = dense_rank() over (order by try_convert(int,FinancialScore) * try_convert(int,[Income Score]) desc)
 from @YourTable

退货

AccountID   FirstName   LastName    FinancialScore  Income Score    Ranked
1           John        Doe         900             4510            1
2           Jane        Doe         345             1000            2

推荐阅读