跳到主要内容

聚合函数

本页面按功能分类,全面概述了 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]

地理空间聚合​

函数描述示例
ST_UNION_AGG对分组内的 GEOMETRY 值做合并ST_UNION_AGG(geom) → MULTIPOINT(...)
ST_INTERSECTION_AGG对分组内的 GEOMETRY 值做相交ST_INTERSECTION_AGG(geom) → POLYGON(...)
ST_ENVELOPE_AGG返回分组内 GEOMETRY 值的最小外接矩形ST_ENVELOPE_AGG(geom) → POLYGON(...)
ST_COLLECT将分组内的 GEOMETRY 值收集为一个 GEOMETRY 结果ST_COLLECT(geom) → GEOMETRYCOLLECTION(...)

字符串聚合​

函数描述示例
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

匿名化​

函数描述示例
MARKOV_TRAIN训练马尔可夫模型MARKOV_TRAIN(address)
欢迎体验 Databend Cloud

基于 Rust + 对象存储构建的新一代多模态数仓,一个平台即可进行 BI、向量、全文检索及地理空间分析。

支持标准 SQL,自动弹性伸缩,助您快速构建现代化数据平台。

注册即领 ¥200 代金券。

注册体验