quantileExact 精确分位数函数
quantileExact
精确计算数值数据序列的分位数。
为了得到精确值,所有传入的值会被合并到一个数组中,然后对该数组进行部分排序。因此,该函数会消耗 O(n) 的内存,其中 n 是传入值的数量。不过,当值的数量较少时,该函数非常高效。
在一个查询中使用多个具有不同分位等级的 quantile* 函数时,其内部状态不会被合并(也就是说,该查询的执行效率低于理论上可能达到的效率)。在这种情况下,请使用 quantiles 函数。
语法
别名:medianExact。
参数
level— 分位数的级别。可选参数。取值为 0 到 1 之间的常量浮点数。建议使用[0.01, 0.99]范围内的level值。默认值:0.5。当level=0.5时,函数计算中位数。expr— 作用于列值的表达式,其结果类型为数值型数据类型、Date 或 DateTime。
返回值
- 指定级别的分位数。
类型:
- 对于数值数据类型,输出格式与输入格式相同。例如:
示例
查询:
结果:
quantileExactLow
与 quantileExact 类似,此函数计算数值数据序列的精确分位数。
为了获得精确值,所有传入的值会先合并为一个数组,然后对该数组进行完全排序。排序算法的复杂度为 O(N·log(N)),其中 N = std::distance(first, last) 为元素个数。
返回值取决于分位数水平(level)和所选元素的数量。也就是说,如果 level 为 0.5,那么当元素个数为偶数时,函数返回较低的中位数值,当元素个数为奇数时返回中间的中位数值。中位数的计算方式与 Python 中使用的 median_low 实现类似。
对于其他任意 level,会返回索引为 level * size_of_array 的元素。例如:
在查询中使用多个分位数等级不同的 quantile* 函数时,其内部状态不会被合并(也就是说,查询的执行效率会低于理想水平)。在这种情况下,请使用 quantiles 函数。
语法
别名:medianExactLow。
参数
level— 分位水平。可选参数。取值为 0 到 1 之间的常量浮点数。推荐在[0.01, 0.99]范围内使用level值。默认值:0.5。当level=0.5时,函数计算中位数。expr— 对列值进行计算的表达式,结果为数值数据类型、Date 或 DateTime。
返回值
- 指定分位水平的分位数。
类型:
示例
查询:
结果:
quantileExactHigh
与 quantileExact 类似,该函数计算数值数据序列的精确分位数。
所有传入的值会合并到一个数组中,然后对该数组进行完全排序,以获得精确值。排序算法的复杂度为 O(N·log(N)),其中 N = std::distance(first, last) 为比较次数。
返回值取决于分位数水平(level)以及选定元素的数量。也就是说,如果 level 为 0.5,则当元素个数为偶数时,函数返回偏高的中位数值,当元素个数为奇数时,函数返回正中的中位数值。中位数的计算方式与 Python 中使用的 median_high 实现类似。对于其他所有 level,返回索引为 level * size_of_array 对应位置的元素。
该实现与当前的 quantileExact 实现的行为完全一致。
在一个查询中使用多个带有不同 level 的 quantile* 函数时,其内部状态不会被合并(也就是说,该查询的执行效率低于理论最优)。在这种情况下,请使用 quantiles 函数。
语法
别名:medianExactHigh。
参数
level— 分位数水平。可选参数,从 0 到 1 的常量浮点数。建议在[0.01, 0.99]范围内使用level值。默认值:0.5。当level = 0.5时,该函数计算中位数。expr— 针对列值的表达式,结果为数值型数据类型、Date 或 DateTime。
返回值
- 指定水平的分位数。
类型:
示例
查询:
结果:
quantileExactExclusive
精确计算数值数据序列的分位数。
为了获得精确值,所有传入的值会被合并到一个数组中,并对该数组进行部分排序。因此,该函数会消耗 O(n) 的内存,其中 n 为传入值的数量。不过,在数据量较小时,该函数非常高效。
此函数等价于 Excel 中的 PERCENTILE.EXC 函数(R6 类型)。
在同一个查询中以不同分位点多次使用 quantileExactExclusive 函数时,其内部状态不会被合并(也就是说,该查询的执行效率会低于本可以达到的最优效率)。在这种情况下,请使用 quantilesExactExclusive 函数。
语法
参数
expr— 作用于列值的表达式,结果为数值型 data types、Date 或 DateTime。
参数说明
返回值
- 指定级别的分位数。
类型:
示例
查询:
结果:
quantileExactInclusive
精确计算数值数据序列的分位数。
为了得到精确值,所有传入的值会被收集到一个数组中,然后对该数组进行部分排序。因此,函数会消耗 O(n) 的内存,其中 n 是传入值的个数。不过,当值的数量较少时,该函数仍然非常高效。
此函数等价于 Excel 函数 PERCENTILE.INC(R7 类型)。
在同一个查询中使用多个具有不同 level 的 quantileExactInclusive 函数时,其内部状态不会被合并(即查询的执行效率低于理论上的最优)。在这种情况下,请使用 quantilesExactInclusive 函数。
语法
参数
参数说明
返回值
- 指定级别的分位数。
类型:
示例
查询:
结果:
另请参阅