暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Oracle 定制版本的MICULSEAL_CONT聚合函数

askTom 2015-09-02
112

问题描述

嗨,

我想在pl/sql中实现一个定制版本的聚合函数。下面的代码段显示了我要使用的百分比的定义:

/**
百分位函数

血管内皮细胞:损益数组
cl :置信水平(如97% )
**/
函数百分位数( vec in t_集合, cl编号)返回数字为
n编号; --数组长度
num Number; --分位数qd对应的数字
qd编号; --作为输入给定的分位数
k编号; -- 1 <= k <=血管长度
第k个百分位数; --第k个百分位数
q1编号;
q2编号;
开始
n := vec.count; --损益数组中的元素数
qd := 100-cl; --与置信区间相关的输入分位数
num := (n * qd) / 100 + 0.5; -- q(i) =【(i - 0.5) / n] * 100 ,因此i = (n * qd) / 100 + 0.5
k := trunc(num, 0); --与第k个分位数对应的第k个整数索引元素

如果qd < (50/n) ,则--如果qd低于第一个分位数
pth := vec(vec. first) ;
ELIF qd > (100 - 50/n)那么--如果qd大于最后一个分位数
pth := vec(vec. last) ;
其他--如果qd介于第一个和最后一个分位数值之间
开始
q1 := 100 * (k - 0.5) / n; -- q(k)
q2 := 100 * (k + 0.5) / n; -- q(k+1)
pth := (((q2-qd) / (100/n)) * vec(k) + ((qd - q1) / (100/n)) * vec(k+1)) * (-1) ;
结束;
结束IF ;

返回pth ;

例外
当别人那么
提高应用错误( --20001 ,'遇到错误-'|| SQLCODE ||'-错误-'||SQLERRM );
结束;

我还没有找到任何的OraclePORENTLE_CONT的源代码来分析它。您能告诉我如何在我提供的函数基础上实现这样的定制的%%ile_CONT函数吗?

先谢了。
东尼。

专家解答

Oracle不会发布其源代码,因此您不会在那里找到任何可以告诉您的信息。

这些文档为perile_cont提供了以下定义:

http://docs.oracle.com/database/121/SQLRF/functions141.htm#SQLRF00687


The result of PERCENTILE_CONT is computed by linear interpolation between values after ordering them. Using the percentile value (P) and the number of rows (N) in the aggregation group, you can compute the row number you are interested in after ordering the rows with respect to the sort specification. This row number (RN) is computed according to the formula RN = (1+(P*(N-1)). The final result of the aggregate function is computed by linear interpolation between the values from rows at row numbers CRN = CEILING(RN) and FRN = FLOOR(RN).

The final result will be:

  If (CRN = FRN = RN) then the result is
    (value of expression from row at RN)
  Otherwise the result is
    (CRN - RN) * (value of expression for row at FRN) +
    (RN - FRN) * (value of expression for row at CRN)


为什么要尝试实现自己的版本?

为提供如何执行此操作的说明,请提供:

*说明现有的%ile_cont无法提供所需结果
*说明修改后的版本应如何处理示例输入和输出
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论