聚合函数
ClickHouse 支持所有标准 SQL 聚合函数(sum、avg、min、max、count),以及丰富的其他聚合函数。
| 页面 | 说明 |
|---|---|
| aggThrow | 此函数可用于测试异常安全性。它会在创建时按照指定的概率抛出异常。 |
| analysisOfVariance | 提供用于单因素方差分析(ANOVA)的统计检验。它对多个服从正态分布的观测值分组进行检验,以判断各分组的均值是否相同。 |
| any | 返回某列中首次出现的值。 |
| anyHeavy | 使用 heavy hitters 算法选择一个高频出现的值。如果在每个查询执行线程中,都存在某个值在超过一半的情况中出现,则返回该值。通常情况下,结果是非确定性的。 |
| anyLast | 返回列中最后出现的值。 |
| approx_top_k | 返回一个数组,其中包含指定列中近似最频繁出现的值及其计数。 |
| approx_top_sum | 返回一个数组,其中包含指定列中近似最常见的值及其各自的出现次数。 |
| argMax | 计算使 val 取得最大值时的 arg 值。 |
| argMin | 计算最小 val 值对应的 arg 值。如果有多行的 val 相同且为最小值,则返回哪个关联的 arg 是不确定的。 |
| argAndMin | 计算最小 val 值对应的 arg 和 val。如果存在多行记录的 val 相同且都是最小值,那么返回哪一行对应的 arg 和 val 是不确定的。 |
| argAndMax | 计算最大 val 值对应的 arg 和 val。如果有多行记录的 val 相同且都是最大值,则返回哪一行对应的 arg 和 val 是不确定的。 |
| groupArrayArray | 将多个数组聚合为一个包含这些数组的更大数组。 |
| avg | 计算算术平均值。 |
| avgWeighted | 计算加权算术平均值。 |
| boundingRatio | 计算一组数值中最左端点和最右端点之间斜率的聚合函数。 |
| categoricalInformationValue | 对每个类别计算 (P(tag = 1) - P(tag = 0))(log(P(tag = 1)) - log(P(tag = 0))) 的值。 |
| contingency | contingency 函数计算列联系系数(contingency coefficient),用于度量表中两列之间的关联程度。其计算方式与 cramersV 函数类似,但在求平方根时分母不同。 |
| corr | 计算皮尔逊相关系数。 |
| corrMatrix | 对 N 个变量计算相关系数矩阵。 |
| corrStable | 计算皮尔逊相关系数,但采用数值更稳定的算法。 |
| count | 计算行数或非 NULL 值的个数。 |
| covarPop | 计算总体协方差 |
| covarPopMatrix | 返回 N 个变量的总体协方差矩阵。 |
| covarPopStable | 计算总体协方差值 |
| covarSamp | 计算 Σ((x - x̅)(y - y̅)) / (n - 1) 的值 |
| covarSampMatrix | 返回 N 个变量的样本协方差矩阵。 |
| covarSampStable | 类似于 covarSamp,但计算速度更慢,数值误差更小。 |
| cramersV | cramersV 函数的结果范围为 0(表示变量之间没有关联)到 1,且只有在每个取值都完全由另一个变量决定时才会达到 1。它可以被看作两个变量之间的关联程度,相对于其最大可能变异程度的百分比。 |
| cramersVBiasCorrected | 计算 Cramer's V,但采用偏差校正。 |
| deltaSum | 对相邻行的算术差求和。 |
| deltaSumTimestamp | 将相邻行之间的差值相加。若差值为负,则忽略该差值。 |
| entropy | 计算一列数据的香农熵。 |
| estimateCompressionRatio | 在不实际压缩给定列的情况下估算其压缩比。 |
| exponentialMovingAverage | 计算在指定时间段内各数值的指数移动平均值。 |
| exponentialTimeDecayedAvg | 返回时间序列在时刻 t 的数值的指数平滑加权移动平均值。 |
| exponentialTimeDecayedCount | 返回时间序列在时间点 t 处的累积指数衰减值。 |
| exponentialTimeDecayedMax | 返回时间索引为 t 和 t-1 时已计算的指数平滑移动平均值中的较大者。 |
| exponentialTimeDecayedSum | 返回时间序列在时间索引 t 处的指数平滑移动平均值之和。 |
| first_value | 它是 any 的别名,引入它是为了兼容窗口函数,因为在使用窗口函数时,有时需要处理 NULL 值(默认情况下,所有 ClickHouse 聚合函数都会忽略 NULL 值)。 |
| flameGraph | 基于堆栈跟踪列表构建火焰图的聚合函数。 |
| groupArray | 创建一个由参数值组成的数组。可以以任意顺序将值添加到数组中(顺序不确定)。 |
| groupArrayInsertAt | 在数组的指定位置插入一个值。 |
| groupArrayIntersect | 返回给定数组的交集(即所有在每个给定数组中都存在的元素)。 |
| groupArrayLast | 创建由最后一个参数各个取值组成的数组。 |
| groupArrayMovingSum | 计算输入值的移动求和。 |
| groupArrayMovingAvg | 计算输入数据的移动平均值。 |
| groupArraySample | 创建一个包含参数值样本的数组。结果数组的大小最多为 max_size 个元素。参数值会被随机选取并添加到数组中。 |
| timeSeriesGroupArray | 按时间戳对时间序列进行升序排列。 |
| groupArraySorted | 返回一个包含按升序排列的前 N 个元素的数组。 |
| groupBitAnd | 对一系列数值执行按位 AND 运算。 |
| groupBitmap | 对无符号整数列执行 Bitmap 或聚合计算时,返回 UInt64 类型的基数;如果添加后缀 -State,则返回 bitmap 对象 |
| groupBitmapAnd | 在位图列上执行 AND 运算,返回 UInt64 类型的基数;如果添加后缀 -State,则返回位图对象。 |
| groupBitmapOr | 对位图列执行 OR 运算,返回类型为 UInt64 的基数;如果添加后缀 -State,则返回位图对象。等价于 groupBitmapMerge。 |
| groupBitmapXor | 计算位图列的按位异或,并以 UInt64 类型返回其基数;如果使用后缀 -State,则返回一个位图对象 |
| groupBitOr | 对一系列数字执行按位 OR 运算。 |
| groupBitXor | 对一系列数值执行按位 XOR 运算。 |
| groupUniqArray | 根据各个参数值创建一个数组。 |
| intervalLengthSum | 计算所有区间(数轴上的线段)并集的总长度。 |
| kolmogorovSmirnovTest | 对来自两个总体的样本进行 Kolmogorov-Smirnov 检验。 |
| kurtPop | 计算一个序列的峰度。 |
| kurtSamp | 计算序列的样本峰度。 |
| largestTriangleThreeBuckets | 对输入数据应用 Largest-Triangle-Three-Buckets 算法。 |
| last_value | 选择最后遇到的值,类似于 anyLast,但允许为 NULL。 |
| mannWhitneyUTest | 对来自两个总体的样本进行 Mann-Whitney 秩检验。 |
| max | 用于计算一组值中最大值的聚合函数。 |
| maxIntersections | 聚合函数,用于在所有区间至少有一次共同相交的前提下,计算一组区间的最大同时相交数量。 |
| maxIntersectionsPosition | 用于计算 maxIntersections 函数各次出现位置的聚合函数。 |
| maxMap | 根据 key 数组中指定的键,计算 value 数组中的最大值。 |
| meanZTest | 对来自两个总体的样本进行均值z检验。 |
| median | median* 函数是对应 quantile* 函数的别名。这些函数用于计算数值数据样本的中位数。 |
| min | 用于计算一组值中最小值的聚合函数。 |
| minMap | 按 key 数组中指定的键,对 value 数组求最小值。 |
| quantile | 计算数值序列的近似分位数。 |
| quantileDD | 计算样本的近似分位数,并对相对误差提供保证。 |
| quantileBFloat16 | 计算由 bfloat16 数值组成的样本的近似分位数。 |
| quantileDeterministic | 计算数值数据序列的近似分位数。 |
| quantileExact 函数 | quantileExact、quantileExactLow、quantileExactHigh、quantileExactExclusive、quantileExactInclusive 函数 |
| quantileExactWeighted | 精确计算数值数据序列的分位数,并考虑每个元素的权重。 |
| quantileGK | 使用 Greenwald-Khanna 算法计算数值序列的分位数。 |
| quantileExactWeightedInterpolated | 使用线性插值,在考虑每个元素权重的情况下计算数值序列的分位数。 |
| quantileInterpolatedWeighted | 使用线性插值计算数值数据序列的分位数,并考虑各元素的权重。 |
| quantiles 聚合函数 | quantiles, quantilesExactExclusive, quantilesExactInclusive, quantilesGK |
| quantileTDigest | 使用 t-digest 算法计算数值序列的近似分位数。 |
| quantileTDigestWeighted | 使用 t-digest 算法对数值数据序列计算近似分位数。 |
| quantileTiming | 按照指定精度计算数值数据序列的分位数。 |
| quantileTimingWeighted | 在确定的精度下,按每个序列成员的权重计算数值数据序列的分位数。 |
| rankCorr | 计算秩相关系数。 |
| simpleLinearRegression | 执行简单(单变量)线性回归。 |
| singleValueOrNull | 聚合函数 singleValueOrNull 用于实现诸如 x = ALL (SELECT ...) 之类的子查询运算符。它会检查数据中是否存在且仅存在一个唯一的非 NULL 值。 |
| skewPop | 计算序列的偏度值。 |
| skewSamp | 计算序列的样本偏度。 |
| sparkbar | 该函数在区间 [min_x, max_x] 上,根据数值 x 及其出现频率(或重复次数)y 绘制频率直方图。 |
| stddevPop | 结果等于 varPop 的平方根。 |
| stddevPopStable | 其结果等于 varPop 的平方根。与 stddevPop 不同,该函数采用数值稳定的算法。 |
| stddevSamp | 结果等于 varSamp 的平方根。 |
| stddevSampStable | 结果等于 varSamp 的平方根。与 varSamp 不同,该函数使用数值稳定的算法。 |
| stochasticLinearRegression | 此函数实现随机线性回归。它支持自定义学习率、L2 正则化系数、小批量大小等参数,并提供多种权重更新算法(Adam、简单 SGD、Momentum、Nesterov)。 |
| stochasticLogisticRegression | 该函数实现了随机逻辑回归,可用于二元分类问题,支持与 stochasticLinearRegression 相同的自定义参数,且工作方式一致。 |
| studentTTest | 对来自两个总体的样本进行 Student t 检验。 |
| sum | 计算总和。仅适用于数值类型。 |
| studentTTestOneSample | 对样本与已知总体均值进行单样本 Student t 检验。 |
| sumCount | 计算数值的总和并同时统计行数。该函数由 ClickHouse 查询优化器使用:如果查询中包含多个 sum、count 或 avg 函数,它们可以被替换为单个 sumCount 函数,以复用计算。通常不需要显式使用该函数。 |
| sumKahan | 使用 Kahan 补偿求和算法计算一组数的和 |
| sumMap | 根据 key 数组中指定的键,对一个或多个 value 数组进行求和。返回一个数组元组:按排序顺序排列的键数组,以及对应键的求和值数组,并且在求和过程中不会发生溢出。 |
| sumMapWithOverflow | 根据 key 数组中指定的键汇总一个 value 数组。返回一个由两个数组组成的元组:排序后的键数组,以及为相应键求和得到的值数组。与 sumMap 函数不同,它执行允许溢出的求和运算。 |
| sumWithOverflow | 计算数值的总和,结果使用与输入参数相同的数据类型。如果总和超过该数据类型的最大值,则按溢出处理进行计算。 |
| theilsU | theilsU 函数用于计算 Theils' U 不确定性系数,该值用于度量表中两列之间的关联程度。 |
| topK | 返回一个数组,其中包含指定列中近似出现频率最高的值。结果数组按照这些值的近似出现频率降序排序(而不是按照值本身排序)。 |
| topKWeighted | 返回指定列中近似出现频率最高的各个值组成的数组。结果数组按照这些值的近似出现频率降序排序(而不是按值本身排序)。此外,还会考虑值的权重。 |
| uniq | 计算参数不同值的大致数量。 |
| uniqCombined | 计算不同参数取值的近似数量。 |
| uniqCombined64 | 计算不同参数值的近似个数。它与 uniqCombined 相同,但对所有数据类型都使用 64 位哈希,而不是仅对 String 数据类型使用。 |
| uniqExact | 精确计算不同参数值的数量。 |
| uniqHLL12 | 使用 HyperLogLog 算法近似计算不同参数值的数量。 |
| uniqTheta | 使用 Theta Sketch 框架近似计算不同参数取值的数量。 |
| varPop | 计算总体方差。 |
| varPopStable | 返回总体方差。与 varPop 不同,此函数使用数值上更稳定的算法。它的运行速度较慢,但计算误差更小。 |
| varSamp | 计算一组数据的样本方差。 |
| varSampStable | 计算数据集的样本方差。与 varSamp 不同,此函数使用数值更稳定的算法。虽然运行速度较慢,但计算误差更小。 |
| welchTTest | 对来自两个总体的样本进行 Welch t 检验。 |
| distinctDynamicTypes | 计算 Dynamic 列中存储的不同数据类型的列表。 |
| distinctJSONPaths | 计算存储在 JSON 列中的唯一路径列表。 |
| timeSeriesDeltaToGrid | 在指定网格上对时间序列数据执行类似 PromQL delta 计算的聚合函数。 |
| timeSeriesInstantDeltaToGrid | 在指定网格上对时间序列数据执行类似 PromQL idelta 计算的聚合函数。 |
| timeSeriesInstantRateToGrid | 在指定网格上对时间序列数据计算 PromQL 风格 irate 的聚合函数。 |
| timeSeriesLastTwoSamples | 用于对时间序列数据进行重采样,以实现类似 PromQL 的 irate 和 idelta 计算的聚合函数 |
| timeSeriesRateToGrid | 在指定网格上对时间序列数据计算类似 PromQL 中 rate() 速率的聚合函数。 |
| timeSeriesResampleToGridWithStaleness | 按指定网格对时间序列数据进行重采样的聚合函数。 |
| timeSeriesDerivToGrid | 一种聚合函数,用于在指定网格上对时间序列数据计算类似 PromQL 的导数。 |
| timeSeriesPredictLinearToGrid | 用于在指定网格上对时间序列数据进行类似 PromQL 的线性预测的聚合函数。 |
| timeSeriesChangesToGrid | 用于在指定网格上对时间序列数据计算类似 PromQL 风格变化的聚合函数。 |
| timeSeriesResetsToGrid | 用于在指定网格上对时间序列数据计算类似 PromQL 的重置次数的聚合函数。 |
| groupConcat | 从一组字符串生成一个拼接后的字符串,可选地使用分隔符分隔,并可选地限制参与拼接的元素数量上限。 |
| quantilePrometheusHistogram | 使用线性插值计算直方图的分位数。 |