聚合函数
本页按功能对 TiDB Cloud Lake 中的聚合函数进行了全面概览,便于快速查阅。
基本聚合
| 函数 | 描述 | 示例 |
|---|
| 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 | 在条件为 true 时返回最小值 | MIN_IF(temp, location = 'outside') → 45.2 |
| MAX_IF | 在条件为 true 时返回最大值 | MAX_IF(speed, vehicle = 'car') → 120.5 |
统计函数
百分位与分布
数组与集合聚合
| 函数 | 描述 | 示例 |
|---|
| 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 |
匿名化