跳转到主要内容
ClickHouse 支持所有标准 SQL 聚合函数 (sumavgminmaxcount) ,以及各种其他聚合函数。
页面说明
aggThrow此函数可用于测试异常安全性。它会在创建时以指定概率抛出异常。
analysisOfVariance提供单因素方差分析 (ANOVA 检验) 的统计检验。它对若干组服从正态分布的观测值进行检验,以确定所有组的均值是否相同。
any选择某列中遇到的第一个值。
anyHeavy使用 heavy hitters 算法选择一个高频值。如果在查询执行的每个线程中,都有某个值出现次数超过一半,则返回该值。通常,结果是不确定的。
anyLast选择某列中遇到的最后一个值。
approx_top_k返回指定列中近似最常见的值及其计数组成的数组。
approx_top_sum返回指定列中近似最常见的值及其计数组成的数组。
argAndMax计算最大 val 值对应的 argval 值。如果有多行的 val 同为最大值,则返回哪个关联的 argval 是不确定的。
argAndMin计算最小 val 值对应的 argval 值。如果有多行的 val 同为最小值,则返回哪个关联的 argval 是不确定的。
argMax计算最大 val 值对应的 arg 值。
argMin计算最小 val 值对应的 arg 值。如果有多行的 val 同为最大值,则返回哪个关联的 arg 是不确定的。
avg计算算术平均值。
avgWeighted计算加权算术平均值。
boundingRatio该聚合函数用于计算一组值中最左端点与最右端点之间的斜率。
categoricalInformationValue计算每个类别的 (P(tag = 1) - P(tag = 0))(log(P(tag = 1)) - log(P(tag = 0))) 值。
contingencycontingency 函数计算列联系数,该值用于衡量表中两列之间的关联性。其计算方式与 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累加连续行之间的差值。如果差值为负,则忽略。
distinctDynamicTypes计算存储在 Dynamic 列中的不同数据类型列表。
distinctJSONPaths计算存储在 JSON 列中的不同路径列表。
distinctJSONPathsAndTypes计算存储在 JSON 中的不同路径及其类型列表。
entropy计算一列值的 Shannon 熵。
estimateCompressionRatio在不进行实际压缩的情况下估算给定列的压缩率。
exponentialMovingAverage计算指定时间的值的指数移动平均。
exponentialTimeDecayedAvg返回时间序列在时间点 t 的指数平滑加权移动平均值。
exponentialTimeDecayedCount返回时间序列在时间索引 t 处的累计指数衰减值。
exponentialTimeDecayedMax返回时间索引 t 处计算得到的指数平滑移动平均值与 t-1 处对应值中的较大值。
exponentialTimeDecayedSum返回时间序列在时间索引 t 处的指数平滑移动平均值之和。
first_value它是 any 的别名,但为兼容窗口函数而引入,因为有时需要处理 NULL 值 (默认情况下,所有 ClickHouse 聚合函数都会忽略 NULL 值) 。
flameGraph使用 stacktraces 列表构建 flamegraph 的聚合函数。
groupArray创建由参数值组成的数组。值可以按任意 (不确定的) 顺序添加到数组中。
groupArrayArray将多个数组聚合为一个由这些数组组成的更大数组。
groupArrayInsertAt在数组的指定位置插入一个值。
groupArrayIntersect返回给定数组的交集 (即返回所有给定数组中都存在的所有元素) 。
groupArrayLast创建由最后几个参数值组成的数组。
groupArrayMovingAvg计算输入值的移动平均。
groupArrayMovingSum计算输入值的移动和。
groupArraySample创建由样本参数值组成的数组。结果数组的大小限制为 max_size 个元素。参数值会被随机选取并添加到数组中。
groupArraySorted返回一个按升序排列、包含前 N 项的数组。
groupBitAnd对一组数值应用按位 AND
groupBitmap对无符号整数列执行 bitmap 或聚合计算,返回 UInt64 类型的 cardinality;如果添加后缀 -State,则返回 Bitmap object。
groupBitmapAnd计算 bitmap 列的 AND,返回 UInt64 类型的 cardinality;如果添加后缀 -State,则返回 Bitmap object。
groupBitmapOr计算 bitmap 列的 OR,返回 UInt64 类型的 cardinality;如果添加后缀 -State,则返回 Bitmap object。这等同于 groupBitmapMerge
groupBitmapXor计算 bitmap 列的 XOR,并返回 UInt64 类型的 cardinality;如果使用后缀 -State,则返回 Bitmap object。
groupBitOr对一组数值应用按位 OR
groupBitXor对一组数值应用按位 XOR
groupConcat从一组字符串中计算得到一个拼接字符串,可选使用分隔符分隔,也可选限制最大元素数量。
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用于计算一组值中最小值的聚合函数。
minMap根据 key 数组中指定的键,从 value 数组中计算最小值。
quantile计算数值数据序列的近似分位数。
quantileBFloat16计算由 bfloat16 数值组成的样本的近似分位数。
quantileDD计算具有相对误差保证的样本的近似分位数。
quantileDeterministic计算数值数据序列的近似分位数。
quantileExact FunctionsquantileExact、quantileExactLow、quantileExactHigh、quantileExactExclusive、quantileExactInclusive 函数
quantileExactExclusive精确计算数值数据序列的分位数。
quantileExactHigh与 quantileExact 类似,此函数精确计算数值数据序列的分位数。
quantileExactInclusive精确计算数值数据序列的分位数。
quantileExactLow与 quantileExact 类似,此函数精确计算数值数据序列的 quantile
quantileExactWeighted精确计算数值数据序列的分位数,并考虑每个元素的权重。
quantileExactWeightedInterpolated使用线性插值计算数值数据序列的分位数,并考虑每个元素的权重。
quantileGK使用 Greenwald-Khanna 算法计算数值数据序列的分位数。
quantileInterpolatedWeighted使用线性插值计算数值数据序列的分位数,并考虑每个元素的权重。
quantilePrometheusHistogram使用线性插值计算直方图的分位数。
quantiles Functionsquantiles、quantilesExactExclusive、quantilesExactInclusive、quantilesGK
quantilesExactExclusive精确计算数值数据序列的分位数。
quantilesExactInclusive精确计算数值数据序列的分位数。
quantilesGKquantilesGK 的工作方式与 quantileGK 类似,但允许同时计算不同层级的分位数,并返回一个数组。
quantilesTimingWeighted按给定精度,根据序列中每个成员的权重计算数值数据序列的分位数。
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 的平方根。与 stddevSamp 不同,此函数使用数值稳定的算法。
stochasticLinearRegression此函数实现随机线性回归。它支持学习率、L2 正则化系数和小批量大小等自定义参数,并提供多种权重更新方法 (Adam、简单 SGD、Momentum、Nesterov) 。
stochasticLogisticRegression此函数实现随机逻辑回归。它可用于二分类问题,支持与 stochasticLinearRegression 相同的自定义参数,工作方式也相同。
studentTTest对来自两个总体的样本应用 Student t 检验。
studentTTestOneSample对一个样本和已知总体均值应用单样本 Student t 检验。
sum计算总和。仅适用于数值。
sumCount计算数值总和并同时统计行数。该函数由 ClickHouse 查询优化器使用:如果一个查询中有多个 sumcountavg 函数,它们可以替换为单个 sumCount 函数,以复用计算结果。通常很少需要显式使用该函数。
sumKahan使用 Kahan 补偿求和算法计算数值的总和。
sumMap根据 key 数组中指定的键,对一个或多个 value 数组求总和。返回一个由数组组成的元组:先是按排序顺序排列的键,后是对应键求和且不发生溢出的值。
sumMapWithOverflow根据 key 数组中指定的键,对 value 数组求总和。返回一个包含两个数组的元组:按排序顺序排列的键,以及对应键求和后的值。与 sumMap 函数不同的是,它在求和时允许溢出。
sumWithOverflow计算数值的总和,结果使用与输入参数相同的数据类型。如果总和超过该数据类型的最大值,则按溢出方式计算。
theilsUtheilsU 函数计算 Theils’ U 不确定性系数,这是一个用于衡量表中两列之间关联性的值。
timeSeriesChangesToGrid该聚合函数用于在指定网格上计算时间序列数据中类似 PromQL 的 changes 值。
timeSeriesDeltaToGrid计算指定网格上时间序列数据的 PromQL 风格 delta 的聚合函数。
timeSeriesDerivToGrid计算指定网格上时间序列数据的 PromQL 风格 derivative 的聚合函数。
timeSeriesGroupArraytimestamp 升序对时间序列进行排序。
timeSeriesInstantDeltaToGrid计算指定网格上时间序列数据的 PromQL 风格 idelta 的聚合函数。
timeSeriesInstantRateToGrid计算指定网格上时间序列数据的 PromQL 风格 irate 的聚合函数。
timeSeriesLastTwoSamples用于对时间序列数据重新采样,以执行 PromQL 风格 irate 和 idelta 计算的聚合函数。
timeSeriesPredictLinearToGrid计算指定网格上时间序列数据的 PromQL 风格线性预测的聚合函数。
timeSeriesRateToGrid计算指定网格上时间序列数据的 PromQL 风格 rate 的聚合函数。
timeSeriesResampleToGridWithStaleness将时间序列数据重新采样到指定网格的聚合函数。
timeSeriesResetsToGrid计算指定网格上时间序列数据的 PromQL 风格 resets 的聚合函数。
topK返回指定列中近似最常见值组成的数组。结果数组按值的近似出现频率降序排序 (而非按值本身排序) 。
topKWeighted返回指定列中近似最常见值组成的数组。结果数组按值的近似出现频率降序排序 (而非按值本身排序) 。此外,还会考虑值的权重。
uniq计算参数不同值的近似数量。
uniqCombined计算参数不同值的近似数量。
uniqCombined64计算参数不同值的近似数量。它与 uniqCombined 相同,但对所有数据类型都使用 64 位哈希,而不只是对 String 数据类型使用。
uniqExact计算参数不同值的精确数量。
uniqHLL12使用 HyperLogLog 算法计算参数不同值的近似数量。
uniqTheta使用 Theta Sketch Framework 计算参数不同值的近似数量。
varPop计算总体方差。
varPopStable返回总体方差。与 varPop 不同,此函数使用数值稳定的算法。它运行较慢,但计算误差更低。
varSamp计算数据集的样本方差。
varSampStable计算数据集的样本方差。与 varSamp 不同,此函数使用数值稳定的算法。它运行较慢,但计算误差更低。
welchTTest对来自两个总体的样本应用 Welch’s t 检验。
最后修改于 2026年6月10日