SQL中是否有相当于Excel的PERCENTRANK(列,值)?

时间:2016-06-13 15:14:33

标签: sql sql-server tsql

SQL中是否有相当于Excel的PERCENTRANK(列,值)?我认为本机SQL Server函数只提供来自同一列的百分位数,但我错过了什么吗?

问题在于我有两列--A和B - 我需要使用A列中的值分布,然后从另一列中获取值并将它们与列A进行排名 - B中的值如何适合定义的分布按A列(或者,确切地说:在B定义的点处得到A列的CDF)。

可能的解决方案:

  1. 编写UDF(他们没有并行化,是吗?) - 你能回答我怎样才能有效地构建这样的UDF?
  2. 使用SQL Server 2016并将其与R(SQL代码中的R代码)
  3. 集成
  4. 将数据复制到R,执行计算,发送回服务器
  5. 将数据复制到Excel并在那里“手动”计算,将结果导回数据库
  6. 我需要应用此策略的多个列包含值和分布,因此我正在寻找有效的解决方案。

    编辑 - 示例: column A column B result 10 16 0,20 =PERCENTRANK($A1:$A4, B1) 20 35 0,83 =PERCENTRANK($A1:$A4, B2) 30 10 0,00 =PERCENTRANK($A1:$A4, B3) 40 25 0,50 =PERCENTRANK($A1:$A4, B4)

1 个答案:

答案 0 :(得分:0)

这可以作为一个近似的,而不是万无一失的数值解决方案,将列作为名称传递:

df.loc[row index condition, [column to replace vals]] = newdf[column].values