Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

聚合函数

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

页面 说明
groupFormat 使用输出格式对每个组中的行进行格式化,并将格式化后的数据作为字符串返回。
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))) 值。
contingency contingency 函数计算列联系数,该值用于衡量表中两列之间的关联性。其计算方式与 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 累加连续行之间的差值。如果差值为负,则忽略。
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 检验。
median median* 函数是对应 quantile* 函数的别名,用于计算数值数据样本的中位数。
min 用于计算一组值中最小值的聚合函数。
minMap 根据 key 数组中指定的键,从 value 数组中计算最小值。
quantile 计算数值数据序列的近似分位数。
quantileBFloat16 计算由 bfloat16 数值组成的样本的近似分位数。
quantileDD 计算具有相对误差保证的样本的近似分位数。
quantileDeterministic 计算数值数据序列的近似分位数。
quantileExact Functions quantileExact、quantileExactLow、quantileExactHigh、quantileExactExclusive、quantileExactInclusive 函数
quantileExactExclusive 精确计算数值数据序列的分位数。
quantileExactHigh 与 quantileExact 类似,此函数精确计算数值数据序列的分位数。
quantileExactInclusive 精确计算数值数据序列的分位数。
quantileExactLow 与 quantileExact 类似,此函数精确计算数值数据序列的 quantile
quantileExactWeighted 精确计算数值数据序列的分位数,并考虑每个元素的权重。
quantileExactWeightedInterpolated 使用线性插值计算数值数据序列的分位数,并考虑每个元素的权重。
quantileGK 使用 Greenwald-Khanna 算法计算数值数据序列的分位数。
quantileInterpolatedWeighted 使用线性插值计算数值数据序列的分位数,并考虑每个元素的权重。
quantilePrometheusHistogram 使用线性插值计算直方图的分位数。
quantiles Functions quantiles、quantilesExactExclusive、quantilesExactInclusive、quantilesGK
quantilesExactExclusive 精确计算数值数据序列的分位数。
quantilesExactInclusive 精确计算数值数据序列的分位数。
quantilesGK quantilesGK 的工作方式与 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 计算数值的总和,结果使用与输入参数相同的数据类型。如果总和超过该数据类型的最大值,则按溢出方式计算。
theilsU theilsU 函数计算 Theils' U 不确定性系数,这是一个用于衡量表中两列之间关联性的值。
timeSeriesChangesToGrid 该聚合函数用于在指定网格上计算时间序列数据中类似 PromQL 的 changes 值。
timeSeriesDeltaToGrid 计算指定网格上时间序列数据的 PromQL 风格 delta 的聚合函数。
timeSeriesDerivToGrid 计算指定网格上时间序列数据的 PromQL 风格 derivative 的聚合函数。
timeSeriesGroupArray timestamp 升序对时间序列进行排序。
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 检验。
Navigation