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

聚合函数

ClickHouse 支持所有标准 SQL 聚合函数(sumavgminmaxcount),以及丰富的其他聚合函数。

页面说明
aggThrow此函数可用于测试异常安全性。它会在创建时按照指定的概率抛出异常。
analysisOfVariance提供用于单因素方差分析(ANOVA)的统计检验。它对多个服从正态分布的观测值分组进行检验,以判断各分组的均值是否相同。
any返回某列中首次出现的值。
anyHeavy使用 heavy hitters 算法选择一个高频出现的值。如果在每个查询执行线程中,都存在某个值在超过一半的情况中出现,则返回该值。通常情况下,结果是非确定性的。
anyLast返回列中最后出现的值。
approx_top_k返回一个数组,其中包含指定列中近似最频繁出现的值及其计数。
approx_top_sum返回一个数组,其中包含指定列中近似最常见的值及其各自的出现次数。
argMax计算使 val 取得最大值时的 arg 值。
argMin计算最小 val 值对应的 arg 值。如果有多行的 val 相同且为最小值,则返回哪个关联的 arg 是不确定的。
argAndMin计算最小 val 值对应的 argval。如果存在多行记录的 val 相同且都是最小值,那么返回哪一行对应的 argval 是不确定的。
argAndMax计算最大 val 值对应的 argval。如果有多行记录的 val 相同且都是最大值,则返回哪一行对应的 argval 是不确定的。
groupArrayArray将多个数组聚合为一个包含这些数组的更大数组。
avg计算算术平均值。
avgWeighted计算加权算术平均值。
boundingRatio计算一组数值中最左端点和最右端点之间斜率的聚合函数。
categoricalInformationValue对每个类别计算 (P(tag = 1) - P(tag = 0))(log(P(tag = 1)) - log(P(tag = 0))) 的值。
contingencycontingency 函数计算列联系系数(contingency coefficient),用于度量表中两列之间的关联程度。其计算方式与 cramersV 函数类似,但在求平方根时分母不同。
corr计算皮尔逊相关系数。
corrMatrix对 N 个变量计算相关系数矩阵。
corrStable计算皮尔逊相关系数,但采用数值更稳定的算法。
count计算行数或非 NULL 值的个数。
covarPop计算总体协方差
covarPopMatrix返回 N 个变量的总体协方差矩阵。
covarPopStable计算总体协方差值
covarSamp计算 Σ((x - x̅)(y - y̅)) / (n - 1) 的值
covarSampMatrix返回 N 个变量的样本协方差矩阵。
covarSampStable类似于 covarSamp,但计算速度更慢,数值误差更小。
cramersVcramersV 函数的结果范围为 0(表示变量之间没有关联)到 1,且只有在每个取值都完全由另一个变量决定时才会达到 1。它可以被看作两个变量之间的关联程度,相对于其最大可能变异程度的百分比。
cramersVBiasCorrected计算 Cramer's V,但采用偏差校正。
deltaSum对相邻行的算术差求和。
deltaSumTimestamp将相邻行之间的差值相加。若差值为负,则忽略该差值。
entropy计算一列数据的香农熵。
estimateCompressionRatio在不实际压缩给定列的情况下估算其压缩比。
exponentialMovingAverage计算在指定时间段内各数值的指数移动平均值。
exponentialTimeDecayedAvg返回时间序列在时刻 t 的数值的指数平滑加权移动平均值。
exponentialTimeDecayedCount返回时间序列在时间点 t 处的累积指数衰减值。
exponentialTimeDecayedMax返回时间索引为 tt-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检验。
medianmedian* 函数是对应 quantile* 函数的别名。这些函数用于计算数值数据样本的中位数。
min用于计算一组值中最小值的聚合函数。
minMapkey 数组中指定的键,对 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 查询优化器使用:如果查询中包含多个 sumcountavg 函数,它们可以被替换为单个 sumCount 函数,以复用计算。通常不需要显式使用该函数。
sumKahan使用 Kahan 补偿求和算法计算一组数的和
sumMap根据 key 数组中指定的键,对一个或多个 value 数组进行求和。返回一个数组元组:按排序顺序排列的键数组,以及对应键的求和值数组,并且在求和过程中不会发生溢出。
sumMapWithOverflow根据 key 数组中指定的键汇总一个 value 数组。返回一个由两个数组组成的元组:排序后的键数组,以及为相应键求和得到的值数组。与 sumMap 函数不同,它执行允许溢出的求和运算。
sumWithOverflow计算数值的总和,结果使用与输入参数相同的数据类型。如果总和超过该数据类型的最大值,则按溢出处理进行计算。
theilsUtheilsU 函数用于计算 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使用线性插值计算直方图的分位数。