quantileGK
quantileGK
引入于:v23.4
使用 Greenwald-Khanna 算法计算数值数据序列的分位数。Greenwald-Khanna 算法是一种用于在数据流中高效计算分位数的算法,由 Michael Greenwald 和 Sanjeev Khanna 于 2001 年提出。它广泛应用于数据库和大数据系统中,在这些场景下,需要对大规模数据流进行实时且较为精确的分位数计算。该算法在空间复杂度上仅为 O(log n),并且对每个元素的时间复杂度仅为 O(log log n)(其中 n 为输入数据量)。同时,该算法具有很高的精度,能够以较高概率给出近似的分位数值。
quantileGK 与 ClickHouse 中其他分位数函数不同,因为它允许用户控制近似分位数结果的精度。
语法
别名: medianGK
参数
accuracy— 分位数的精度。为正整数常量。精度值越大,误差越小。例如,如果将精度参数设置为 100,则计算得到的分位数在较高概率下误差不会超过 1%。计算得到的分位数精度与算法的计算复杂度之间存在权衡。更高的精度需要更多内存和计算资源来更准确地计算分位数,而较低的精度参数可以实现更快、更节省内存的计算,但精度会略有下降。UInt*level— 可选。分位数的级别。取值为 0 到 1 之间的常量浮点数。默认值:0.5。当level=0.5时,函数计算中位数。Float*
参数
返回值
返回指定级别和精度的分位数。Float64 或 Date 或 DateTime
示例
计算不同精度级别的分位数
更高精度的分位数估计
另请参见