跳到主要内容

聚合函数

本页面按功能分类,全面概述了 Databend 中的聚合函数,便于快速查阅。

基本聚合

函数描述示例
COUNT计算行数或非 NULL 值的数量COUNT(*)10
COUNT_DISTINCT计算不同值的数量COUNT(DISTINCT city)5
APPROX_COUNT_DISTINCT近似计算不同值的数量APPROX_COUNT_DISTINCT(user_id)9955
SUM计算值的总和SUM(sales)1250.75
AVG计算值的平均值AVG(temperature)72.5
MIN返回最小值MIN(price)9.99
MAX返回最大值MAX(price)99.99
ANY_VALUE从分组中返回任意一个值ANY_VALUE(status)'active'

条件聚合

函数描述示例
COUNT_IF计算满足条件的行数COUNT_IF(price > 100)5
SUM_IF对满足条件的值求和SUM_IF(amount, status = 'completed')750.25
AVG_IF对满足条件的值求平均AVG_IF(score, passed = true)85.6
MIN_IF返回条件为真时的最小值MIN_IF(temp, location = 'outside')45.2
MAX_IF返回条件为真时的最大值MAX_IF(speed, vehicle = 'car')120.5

统计函数

函数描述示例
VAR_POP / VARIANCE_POP总体方差VAR_POP(height)10.25
VAR_SAMP / VARIANCE_SAMP样本方差VAR_SAMP(height)12.3
STDDEV_POP总体标准差STDDEV_POP(height)3.2
STDDEV_SAMP样本标准差STDDEV_SAMP(height)3.5
COVAR_POP总体协方差COVAR_POP(x, y)2.5
COVAR_SAMP样本协方差COVAR_SAMP(x, y)2.7
KURTOSIS衡量分布的峰度KURTOSIS(values)2.1
SKEWNESS衡量分布的偏度SKEWNESS(values)0.2

百分位数与分布

函数描述示例
MEDIAN计算中位数MEDIAN(response_time)125
MODE返回最频繁出现的值MODE(category)'electronics'
QUANTILE_CONT连续插值分位数QUANTILE_CONT(0.95)(response_time)350.5
QUANTILE_DISC离散分位数QUANTILE_DISC(0.5)(age)35
QUANTILE_TDIGEST使用 t-digest 算法近似计算分位数QUANTILE_TDIGEST(0.9)(values)95.2
QUANTILE_TDIGEST_WEIGHTED加权 t-digest 分位数QUANTILE_TDIGEST_WEIGHTED(0.5)(values, weights)50.5
MEDIAN_TDIGEST使用 t-digest 算法近似计算中位数MEDIAN_TDIGEST(response_time)124.5
HISTOGRAM创建直方图分桶HISTOGRAM(10)(values)[{...}]

数组与集合聚合

函数描述示例
ARRAY_AGG将值收集到一个数组中ARRAY_AGG(product)['A', 'B', 'C']
GROUP_ARRAY_MOVING_AVG计算数组的移动平均值GROUP_ARRAY_MOVING_AVG(3)(values)[null, null, 3.0, 6.0, 9.0]
GROUP_ARRAY_MOVING_SUM计算数组的移动总和GROUP_ARRAY_MOVING_SUM(2)(values)[null, 3, 7, 11, 15]

字符串聚合

函数描述示例
GROUP_CONCAT使用分隔符连接值GROUP_CONCAT(city, ', ')'New York, London, Tokyo'
STRING_AGG使用分隔符连接字符串STRING_AGG(tag, ',')'red,green,blue'
LISTAGG使用分隔符连接值LISTAGG(name, ', ')'Alice, Bob, Charlie'

JSON 聚合

函数描述示例
JSON_ARRAY_AGG将值聚合为 JSON 数组JSON_ARRAY_AGG(name)'["Alice", "Bob", "Charlie"]'
JSON_OBJECT_AGG从键值对创建 JSON 对象JSON_OBJECT_AGG(name, score)'{"Alice": 95, "Bob": 87}'

参数选择

函数描述示例
ARG_MAX返回 expr2 最大时 expr1 的值ARG_MAX(name, score)'Alice'
ARG_MIN返回 expr2 最小时 expr1 的值ARG_MIN(name, score)'Charlie'

漏斗分析

函数描述示例
RETENTION计算留存率RETENTION(action = 'signup', action = 'purchase')[100, 40]
WINDOWFUNNEL在时间窗口内搜索事件序列WINDOWFUNNEL(1800)(timestamp, event='view', event='click', event='purchase')2