聚合函数
# StreamSQL 聚合函数
聚合函数对一组值执行计算并返回单个值。聚合函数只能用在以下表达式中:
- SELECT 语句的 SELECT 列表(子查询或外部查询)
- HAVING 子句
# SUM - 求和函数
语法: sum(col)
描述: 返回组中数值的总和。空值不参与计算。
增量计算: ✅ 支持
示例:
SELECT device, sum(temperature) as total_temp
FROM stream
GROUP BY device, TumblingWindow('10s')
2
3
# AVG - 平均值函数
语法: avg(col)
描述: 返回组中数值的平均值。空值不参与计算。
增量计算: ✅ 支持
示例:
SELECT device, avg(temperature) as avg_temp
FROM stream
GROUP BY device, TumblingWindow('10s')
2
3
# COUNT - 计数函数
语法: count(*)
描述: 返回组中的行数。
增量计算: ✅ 支持
示例:
SELECT device, count(*) as record_count
FROM stream
GROUP BY device, TumblingWindow('10s')
2
3
# MIN - 最小值函数
语法: min(col)
描述: 返回组中数值的最小值。空值不参与计算。
增量计算: ✅ 支持
示例:
SELECT device, min(temperature) as min_temp
FROM stream
GROUP BY device, TumblingWindow('10s')
2
3
# MAX - 最大值函数
语法: max(col)
描述: 返回组中数值的最大值。空值不参与计算。
增量计算: ✅ 支持
示例:
SELECT device, max(temperature) as max_temp
FROM stream
GROUP BY device, TumblingWindow('10s')
2
3
# COLLECT - 收集函数
语法: collect(col)
描述: 获取当前窗口所有消息的列值组成的数组。
增量计算: ✅ 支持
示例:
SELECT device, collect(temperature) as temp_values
FROM stream
GROUP BY device, TumblingWindow('10s')
2
3
# LAST_VALUE - 最后值函数
语法: last_value(col)
描述: 返回组中最后一行的值。
增量计算: ✅ 支持
示例:
SELECT device, last_value(temperature) as last_temp
FROM stream
GROUP BY device, TumblingWindow('10s')
2
3
# MERGE_AGG - 合并聚合函数
语法: merge_agg(col)
描述: 将组中的值合并为单个值。对于对象类型,合并所有键值对;对于其他类型,用逗号连接。
增量计算: ✅ 支持
示例:
SELECT device, merge_agg(status) as all_status
FROM stream
GROUP BY device, TumblingWindow('10s')
2
3
# DEDUPLICATE - 去重函数
语法: deduplicate(col, false)
描述: 返回当前组去重的结果,通常用在窗口中。第二个参数指定是否返回全部结果。
增量计算: ✅ 支持
示例:
SELECT device, deduplicate(temperature, true) as unique_temps
FROM stream
GROUP BY device, TumblingWindow('10s')
2
3
# STDDEV - 标准差函数
语法: stddev(col)
描述: 返回组中所有值的总体标准差。空值不参与计算。
增量计算: ✅ 支持(使用韦尔福德算法优化)
示例:
SELECT device, stddev(temperature) as temp_stddev
FROM stream
GROUP BY device, TumblingWindow('10s')
2
3
# STDDEVS - 样本标准差函数
语法: stddevs(col)
描述: 返回组中所有值的样本标准差。空值不参与计算。
增量计算: ✅ 支持(使用韦尔福德算法优化)
示例:
SELECT device, stddevs(temperature) as temp_sample_stddev
FROM stream
GROUP BY device, TumblingWindow('10s')
2
3
# VAR - 方差函数
语法: var(col)
描述: 返回组中所有值的总体方差。空值不参与计算。
增量计算: ✅ 支持(使用韦尔福德算法优化)
示例:
SELECT device, var(temperature) as temp_variance
FROM stream
GROUP BY device, TumblingWindow('10s')
2
3
# VARS - 样本方差函数
语法: vars(col)
描述: 返回组中所有值的样本方差。空值不参与计算。
增量计算: ✅ 支持(使用韦尔福德算法优化)
示例:
SELECT device, vars(temperature) as temp_sample_variance
FROM stream
GROUP BY device, TumblingWindow('10s')
2
3
# MEDIAN - 中位数函数
语法: median(col)
描述: 返回组中所有值的中位数。空值不参与计算。
增量计算: ✅ 支持
示例:
SELECT device, median(temperature) as temp_median
FROM stream
GROUP BY device, TumblingWindow('10s')
2
3
# PERCENTILE - 百分位数函数
语法: percentile(col, 0.5)
描述: 返回组中所有值的指定百分位数。第二个参数指定百分位数的值,取值范围为 0.0 ~ 1.0。
增量计算: ✅ 支持
示例:
SELECT device, percentile(temperature, 0.95) as temp_p95
FROM stream
GROUP BY device, TumblingWindow('10s')
2
3