Skip to main content

聚合函数(Aggregate Functions)

本页面全面概述了 Databend 中的聚合函数,按功能分类以便参考。

基础聚合

函数描述示例
COUNT计算行数或非空值的数量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返回组中的任意一个值ANY(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