聚合函数(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 |