TSL语言基础 > SQL基础到TS-SQL > TS-SQL语法 > SELECT查询语句 > 聚集函数

Percentileof    

简述
返回数据集中第 k 个百分点的值。


PercentileOf 可只用于数字列。空值将被忽略。
定义
PercentileOf(Expression:TExpression;K:Real[;BoolConditionExp:TExpression[;N:Integer[;MovingFirst:Bool[;CacheId:String]]]]):real
参数
名称类型说明
ExpressionTExpression数字数据类型表达式。参见多字段聚集。可在表达式前加关键字DISTINCT,表示不管该值出现了多少次,只使用每个值的唯一实例。不添加即统计所有。
Kinteger0到1之间的实数,包含0和1
BoolConditionExpTExpression布尔型表达式,如果存在该参数,则统计内容为该表达式为真的行,否则统计所有。
Ninteger整数,如果没有N参数,则统计对象为全部,否则统计对象为满足条件的从当前行起往前总共的N条记录, 如果为负数,则为从当前起往后总共|N|行。
MovingFirstBoolean布尔型,为真表示统计内容为最近N条内符合BoolConditionExp条件的,为假表示统计内容为最近N条符合BoolConditionExp条件的。省略的时候具体默认值由SelectOpt来决定,参见:SELECTOPT(Options)
CacheIdString字符串型,缓存标识串,参见:SQL时间序列统计缓存标志与性能加速
返回realReal

  • 算法


    对序列从小到大排序,数据长度为n,则

    (1) 求(n-1)* K,记整数部分为i,小数部分为j

    (2) 所求结果=(1-j)*序列第(i+1)个数+j*序列第(i+2)个数
    范例

    Table1 := Array(
    ('A':5,'B':20,'C':34),
    ('A':5,'B':20,'C':34),
    ('A':9,'B':20,'C':34),
    ('A':7,'B':18,'C':34));
    Return VSelect Percentileof( ['A'],1/3) from Table1 end;//返回结果5
相关