跳到主要内容
跳到主要内容

quantileExact 函数

quantileExact

准确计算数字数据序列的分位数

为了获得准确值,所有传递的值被组合成一个数组,然后进行部分排序。因此,该函数消耗 O(n) 的内存,其中 n 是传递的值的数量。尽管如此,对于少量值,该函数仍然非常有效。

当在查询中使用多个不同级别的 quantile* 函数时,内部状态不会合并(也就是说,查询的效率低于其应有的效率)。在这种情况下,请使用 quantiles 函数。

语法

别名: medianExact

参数

  • level — 分位数的级别。可选参数。常量浮点数,范围为 0 到 1。我们建议使用 [0.01, 0.99] 范围内的 level 值。默认值: 0.5。在 level=0.5 时,该函数计算中位数
  • expr — 针对列值的表达式,返回数字数据类型DateDateTime

返回值

  • 指定级别的分位数。

类型:

  • 对于数字数据类型,输出格式将与输入格式相同。例如:
  • 如果输入值具有 Date 类型,则返回Date
  • 如果输入值具有 DateTime 类型,则返回DateTime

示例

查询:

结果:

quantileExactLow

quantileExact 相似,该函数计算数字数据序列的确切分位数

为了获得准确值,所有传递的值被组合在一起并完全排序。排序算法的复杂度为 O(N·log(N)),其中 N = std::distance(first, last) 比较次数。

返回值取决于分位数级别和选择中元素的数量,即如果级别为 0.5,则该函数会返回偶数个元素的较低中位数值,以及奇数个元素的中间中位数值。中位数的计算方式类似于在 Python 中使用的 median_low 实现。

对于所有其他级别,返回对应于 level * size_of_array 值的索引的元素。例如:

当在查询中使用多个不同级别的 quantile* 函数时,内部状态不会合并(也就是说,查询的效率低于其应有的效率)。在这种情况下,请使用 quantiles 函数。

语法

别名: medianExactLow

参数

  • level — 分位数的级别。可选参数。常量浮点数,范围为 0 到 1。我们建议使用 [0.01, 0.99] 范围内的 level 值。默认值: 0.5。在 level=0.5 时,该函数计算中位数
  • expr — 针对列值的表达式,返回数字数据类型DateDateTime

返回值

  • 指定级别的分位数。

类型:

  • 对于数字数据类型输入,返回Float64
  • 如果输入值具有 Date 类型,则返回Date
  • 如果输入值具有 DateTime 类型,则返回DateTime

示例

查询:

结果:

quantileExactHigh

quantileExact 相似,该函数计算数字数据序列的确切分位数

为了获得准确值,所有传递的值被组合成一个数组,并进行完全排序。排序算法的复杂度为 O(N·log(N)),其中 N = std::distance(first, last) 比较次数。

返回值取决于分位数级别和选择中元素的数量,即如果级别为 0.5,则该函数会返回偶数个元素的较高中位数值,以及奇数个元素的中间中位数值。中位数的计算方式类似于在 Python 中使用的 median_high 实现。对于所有其他级别,返回对应于 level * size_of_array 值的索引的元素。

该实现的行为与当前的 quantileExact 实现是完全相同的。

当在查询中使用多个不同级别的 quantile* 函数时,内部状态不会合并(也就是说,查询的效率低于其应有的效率)。在这种情况下,请使用 quantiles 函数。

语法

别名: medianExactHigh

参数

  • level — 分位数的级别。可选参数。常量浮点数,范围为 0 到 1。我们建议使用 [0.01, 0.99] 范围内的 level 值。默认值: 0.5。在 level=0.5 时,该函数计算中位数
  • expr — 针对列值的表达式,返回数字数据类型DateDateTime

返回值

  • 指定级别的分位数。

类型:

  • 对于数字数据类型输入,返回Float64
  • 如果输入值具有 Date 类型,则返回Date
  • 如果输入值具有 DateTime 类型,则返回DateTime

示例

查询:

结果:

quantileExactExclusive

准确计算数字数据序列的分位数

为了获得准确值,所有传递的值被组合成一个数组,然后进行部分排序。因此,该函数消耗 O(n) 的内存,其中 n 是传递的值的数量。尽管如此,对于少量值,该函数仍然非常有效。

此函数等同于 Excel 函数 PERCENTILE.EXC类型 R6)。

当在查询中使用多个不同级别的 quantileExactExclusive 函数时,内部状态不会合并(也就是说,查询的效率低于其应有的效率)。在这种情况下,请使用 quantilesExactExclusive 函数。

语法

参数

参数

  • level — 分位数的级别。可选。可能的值: (0, 1) — 不包括边界。默认值: 0.5。在 level=0.5 时,该函数计算中位数Float

返回值

  • 指定级别的分位数。

类型:

  • 对于数字数据类型输入,返回Float64
  • 如果输入值具有 Date 类型,则返回Date
  • 如果输入值具有 DateTime 类型,则返回DateTime

示例

查询:

结果:

quantileExactInclusive

准确计算数字数据序列的分位数

为了获得准确值,所有传递的值被组合成一个数组,然后进行部分排序。因此,该函数消耗 O(n) 的内存,其中 n 是传递的值的数量。尽管如此,对于少量值,该函数仍然非常有效。

此函数等同于 Excel 函数 PERCENTILE.INC类型 R7)。

当在查询中使用多个不同级别的 quantileExactInclusive 函数时,内部状态不会合并(也就是说,查询的效率低于其应有的效率)。在这种情况下,请使用 quantilesExactInclusive 函数。

语法

参数

参数

  • level — 分位数的级别。可选。可能的值: [0, 1] — 包括边界。默认值: 0.5。在 level=0.5 时,该函数计算中位数Float

返回值

  • 指定级别的分位数。

类型:

  • 对于数字数据类型输入,返回Float64
  • 如果输入值具有 Date 类型,则返回Date
  • 如果输入值具有 DateTime 类型,则返回DateTime

示例

查询:

结果:

参见