SQL 聚合函数
InfluxDB 3 Core 处于 Public Alpha 阶段
InfluxDB 3 Core 处于公测 alpha 阶段,可用于测试和反馈,但不适用于生产环境。产品和本文档都在不断完善中。我们欢迎并鼓励您提供关于 alpha 体验的意见,并邀请您加入我们的公共频道以获取更新和分享反馈。
Alpha 预期和建议
- 在 alpha 期间,我们可能会进行破坏性更改,这可能需要您删除数据并重新开始。如果您使用的数据很重要,请在其他地方保留备份副本。
- 在 alpha 期间,我们在每次合并到 InfluxDB
main
分支时都会生成新的构建版本。更改频繁,相关更新会发布到我们的公共频道。
SQL 聚合函数聚合指定列中每个组或 SQL 分区的数值,并为每个组返回一行,其中包含聚合值。
通用聚合函数
array_agg
返回从表达式元素创建的数组。
array_agg
返回 InfluxDB 不支持的 LIST
arrow 类型。要与 InfluxDB 一起使用,请使用方括号表示法来引用返回数组中元素的索引。数组从 1 开始索引。
参数
- expression: 要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
查看 array_agg
查询示例
以下示例使用InfluxDB 入门教程中提供的示例数据集。
SELECT
room,
array_agg(temp)[3] AS '3rd_temp'
FROM home
GROUP BY room
room | 3rd_temp |
---|
Kitchen | 22.7 |
Living Room | 21.8 |
avg
返回指定列中数值的平均值。
参数
- expression: 要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
别名
查看 avg
查询示例
SELECT
location,
avg(water_level) AS water_level_avg
FROM h2o_feet
GROUP BY location
location | water_level_avg |
---|
coyote_creek | 5.359142420303919 |
santa_monica | 3.5307120942458843 |
bit_and
计算所有非空输入值的按位 AND
。
参数
- expression: 要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
查看 bit_and
查询示例
以下示例使用NOAA Bay Area 天气数据。
SELECT
location,
bit_and(precip::BIGINT) AS precip_bit_and
FROM weather
GROUP BY location
location | precip_bit_and |
---|
Concord | 0 |
Hayward | 0 |
San Francisco | 0 |
bit_or
计算所有非空输入值的按位 OR。
参数
- expression: 要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
查看 bit_or
查询示例
以下示例使用NOAA Bay Area 天气数据。
SELECT
location,
bit_or(precip::BIGINT) AS precip_bit_or
FROM weather
GROUP BY location
location | precip_bit_or |
---|
Concord | 7 |
Hayward | 7 |
San Francisco | 7 |
bit_xor
计算所有非空输入值的按位异或 OR。
参数
- expression: 要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
查看 bit_xor
查询示例
以下示例使用NOAA Bay Area 天气数据。
SELECT
location,
bit_xor(precip::BIGINT) AS precip_bit_xor
FROM weather
GROUP BY location
location | precip_bit_xor |
---|
Concord | 4 |
Hayward | 6 |
San Francisco | 4 |
bool_and
如果所有非空输入值均为 true
,则返回 true
,否则返回 false
。
参数
- expression: 要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
查看 bool_and
查询示例
以下示例使用NOAA Bay Area 天气数据。
SELECT
location,
bool_and(precip > 0) AS precip_bool_and
FROM weather
GROUP BY location
location | precip_bool_and |
---|
Concord | false |
Hayward | false |
San Francisco | false |
bool_or
如果任何非空输入值为 true
,则返回 true
,否则返回 false
。
参数
- expression: 要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
查看 bool_or
查询示例
以下示例使用NOAA Bay Area 天气数据。
SELECT
location,
bool_or(precip > 0) AS precip_bool_or
FROM weather
GROUP BY location
location | precip_bool_or |
---|
Concord | true |
Hayward | true |
San Francisco | true |
count
返回指定列中的行数。
Count 包括总计数中的 null 值。要从总计数中排除 null 值,请在 WHERE
子句中包含 <column> IS NOT NULL
。
参数
- expression: 要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
查看 count
查询示例
以下示例使用NOAA Bay Area 天气数据。
SELECT
location,
count(precip) AS precip_count
FROM weather
GROUP BY location
location | precip_count |
---|
Concord | 1094 |
Hayward | 1096 |
San Francisco | 1096 |
first_value
根据指定的排序返回聚合组中的第一个元素。如果未指定排序,则返回组中的任意元素。
first_value(expression [ORDER BY expression])
参数
- expression: 要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
查看 first_value
查询示例
以下示例使用NOAA Bay Area 天气数据。
SELECT
location,
first_value(temp_max ORDER BY time) AS temp_max_first_value
FROM weather
GROUP BY location
location | temp_max_first_value |
---|
Concord | 59 |
Hayward | 57 |
San Francisco | 66 |
last_value
根据指定的排序返回聚合组中的最后一个元素。如果未指定排序,则返回组中的任意元素。
last_value(expression [ORDER BY expression])
参数
- expression: 要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
查看 last_value
查询示例
以下示例使用NOAA Bay Area 天气数据。
SELECT
location,
last_value(temp_max ORDER BY time) AS temp_max_last_value
FROM weather
GROUP BY location
location | temp_max_last_value |
---|
Concord | 59 |
Hayward | 58 |
San Francisco | 62 |
max
返回指定列中的最大值。
要同时返回最大值及其关联的时间戳,请使用 selector_max
。
参数
- expression: 要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
查看 max
查询示例
SELECT
location,
max(water_level) AS water_level_max
FROM h2o_feet
GROUP BY location
location | water_level_max |
---|
santa_monica | 7.205 |
coyote_creek | 9.964 |
mean
avg 的别名。
返回指定列中的中值。
median(expression)
参数
- expression: 要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
min
返回指定列中的最小值。
要同时返回最小值及其关联的时间戳,请使用 selector_max
。
参数
- expression: 要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
查看 min
查询示例
SELECT
location,
min(water_level) AS water_level_min
FROM h2o_feet
GROUP BY location
location | water_level_min |
---|
coyote_creek | -0.61 |
santa_monica | -0.243 |
sum
返回指定列中所有值的总和。
参数
- expression: 要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
查看 sum
查询示例
SELECT
location,
sum(water_level) AS water_level_sum
FROM h2o_feet
GROUP BY location
location | water_level_sum |
---|
santa_monica | 27024.070369358 |
coyote_creek | 40750.918963991004 |
统计聚合函数
corr
返回两个数值之间的相关系数。
corr(expression1, expression2)
参数
- expression1: 要操作的第一个列或字面值。
- expression2: 要操作的第二个列或字面值。
查看 corr
查询示例
以下示例使用InfluxDB 入门教程中提供的示例数据集。
SELECT
room,
corr(hum, temp) AS correlation
FROM home
GROUP BY room
room | correlation |
---|
Living Room | 0.43665270457835725 |
Kitchen | 0.6741766954929539 |
covar
返回一组数字对的协方差。
covar(expression1, expression2)
参数
- expression1: 要操作的第一个列或字面值。
- expression2: 要操作的第二个列或字面值。
查看 covar
查询示例
以下示例使用InfluxDB 入门教程中提供的示例数据集。
SELECT
room,
covar(hum, temp) AS covar
FROM home
GROUP BY room
room | covar |
---|
Living Room | 0.03346153846153959 |
Kitchen | 0.11134615384615432 |
covar_pop
返回一组数字对的总体协方差。
covar_pop(expression1, expression2)
参数
- expression1: 要操作的第一个列或字面值。
- expression2: 要操作的第二个列或字面值。
查看 covar_pop
查询示例
以下示例使用InfluxDB 入门教程中提供的示例数据集。
SELECT
room,
covar_pop(hum, temp) AS covar_pop
FROM home
GROUP BY room
room | covar_pop |
---|
Kitchen | 0.10278106508875783 |
Living Room | 0.030887573964498087 |
covar_samp
返回一组数字对的样本协方差。
covar_samp(expression1, expression2)
参数
- expression1: 要操作的第一个列或字面值。
- expression2: 要操作的第二个列或字面值。
查看 covar_samp
查询示例
以下示例使用InfluxDB 入门教程中提供的示例数据集。
SELECT
room,
covar_samp(hum, temp) AS covar_samp
FROM home
GROUP BY room
room | covar_samp |
---|
Kitchen | 0.11134615384615432 |
Living Room | 0.03346153846153959 |
regr_avgx
计算非空因变量 expression_y
的自变量(输入)expression_x
的平均值。
regr_avgx(expression_y, expression_x)
参数
- expression_y: 因变量。可以是常量、列或函数,以及算术运算符的任意组合。
- expression_x: 自变量。可以是常量、列或函数,以及算术运算符的任意组合。
查看 regr_avgx
查询示例
以下示例使用NOAA Bay Area 天气数据。
SELECT
location,
regr_avgx(temp_min, temp_max) AS temp_regr_avgx
FROM weather
GROUP BY location
location | temp_regr_avgx |
---|
Concord | 75.54379562043796 |
Hayward | 69.14808043875686 |
San Francisco | 67.59945255474454 |
regr_avgy
计算非空因变量 expression_y
的因变量(输出)expression_y
的平均值。
regr_avgy(expression_y, expression_x)
参数
- expression_y: 因变量。可以是常量、列或函数,以及算术运算符的任意组合。
- expression_x: 自变量。可以是常量、列或函数,以及算术运算符的任意组合。
查看 regr_avgy
查询示例
以下示例使用NOAA Bay Area 天气数据。
SELECT
location,
regr_avgy(temp_min, temp_max) AS temp_regr_avgy
FROM weather
GROUP BY location
location | temp_regr_avgy |
---|
Concord | 50.153284671532845 |
Hayward | 50.913162705667276 |
San Francisco | 51.52372262773722 |
regr_count
计算非空配对数据点的数量。
regr_count(expression_y, expression_x)
参数
- expression_y: 因变量。可以是常量、列或函数,以及算术运算符的任意组合。
- expression_x: 自变量。可以是常量、列或函数,以及算术运算符的任意组合。
查看 regr_count
查询示例
以下示例使用NOAA Bay Area 天气数据。
SELECT
location,
regr_count(temp_min, temp_max) AS temp_regr_count
FROM weather
GROUP BY location
location | temp_regr_count |
---|
Concord | 1096 |
Hayward | 1094 |
San Francisco | 1096 |
regr_intercept
计算线性回归线的 y 轴截距。对于方程 (y = kx + b)
,此函数返回 b
。
regr_intercept(expression_y, expression_x)
参数
- expression_y: 因变量。可以是常量、列或函数,以及算术运算符的任意组合。
- expression_x: 自变量。可以是常量、列或函数,以及算术运算符的任意组合。
查看 regr_intercept
查询示例
以下示例使用NOAA Bay Area 天气数据。
SELECT
location,
regr_intercept(temp_min, temp_max) AS temp_regr_intercept
FROM weather
GROUP BY location
location | temp_regr_intercept |
---|
Concord | 11.636281392206769 |
Hayward | 12.876956842745152 |
San Francisco | 19.125237647086607 |
regr_r2
计算自变量和因变量之间相关系数的平方。
regr_r2(expression_y, expression_x)
参数
- expression_y: 因变量。可以是常量、列或函数,以及算术运算符的任意组合。
- expression_x: 自变量。可以是常量、列或函数,以及算术运算符的任意组合。
查看 regr_r2
查询示例
以下示例使用NOAA Bay Area 天气数据。
SELECT
location,
regr_r2(temp_min, temp_max) AS temp_regr_r2
FROM weather
GROUP BY location
location | temp_regr_r2 |
---|
Concord | 0.6474628308450441 |
Hayward | 0.5166296626320914 |
San Francisco | 0.5032317511200297 |
regr_slope
返回聚合列中非空对的线性回归线的斜率。给定输入列 Y
和 X
: regr_slope(Y, X)
使用最小 RSS 拟合返回斜率(Y = k*X + b
中的 k
)。
regr_slope(expression_y, expression_x)
参数
- expression_y: 要操作的 Y 表达式。可以是常量、列或函数,以及算术运算符的任意组合。
- expression_x: 要操作的 X 表达式。可以是常量、列或函数,以及算术运算符的任意组合。
查看 regr_slope
查询示例
以下示例使用NOAA Bay Area 天气数据。
SELECT
location,
regr_slope(temp_min, temp_max) AS temp_regr_slope
FROM weather
GROUP BY location
location | temp_regr_slope |
---|
Concord | 0.5098632252058237 |
Hayward | 0.5500688612261629 |
San Francisco | 0.4792714105844738 |
regr_sxx
计算自变量的平方和。
regr_sxx(expression_y, expression_x)
参数
- expression_y: 因变量。可以是常量、列或函数,以及算术运算符的任意组合。
- expression_x: 自变量。可以是常量、列或函数,以及算术运算符的任意组合。
查看 regr_sxx
查询示例
以下示例使用NOAA Bay Area 天气数据。
SELECT
location,
regr_sxx(temp_min, temp_max) AS temp_regr_sxx
FROM weather
GROUP BY location
location | temp_regr_sxx |
---|
Concord | 210751.89781021897 |
Hayward | 99644.01096892142 |
San Francisco | 77413.15967153282 |
regr_syy
计算因变量的平方和。
regr_syy(expression_y, expression_x)
参数
- expression_y: 因变量。可以是常量、列或函数,以及算术运算符的任意组合。
- expression_x: 自变量。可以是常量、列或函数,以及算术运算符的任意组合。
查看 regr_syy
查询示例
以下示例使用NOAA Bay Area 天气数据。
SELECT
location,
regr_syy(temp_min, temp_max) AS temp_regr_syy
FROM weather
GROUP BY location
location | temp_regr_syy |
---|
Concord | 84618.24817518248 |
Hayward | 58358.750457038404 |
San Francisco | 35335.38321167884 |
regr_sxy
计算配对数据点的乘积之和。
regr_sxy(expression_y, expression_x)
参数
- expression_y: 因变量。可以是常量、列或函数,以及算术运算符的任意组合。
- expression_x: 自变量。可以是常量、列或函数,以及算术运算符的任意组合。
查看 regr_sxy
查询示例
以下示例使用NOAA Bay Area 天气数据。
SELECT
location,
regr_sxy(temp_min, temp_max) AS temp_regr_sxy
FROM weather
GROUP BY location
location | temp_regr_sxy |
---|
Concord | 107454.64233576645 |
Hayward | 54811.06764168191 |
San Francisco | 37101.914233576645 |
stddev
返回一组数字的标准差。
参数
- expression: 要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
查看 stddev
查询示例
以下示例使用InfluxDB 入门教程中提供的示例数据集。
SELECT
room,
stddev(co) AS stddev
FROM home
GROUP BY room
room | stddev |
---|
Living Room | 5.885662718931967 |
Kitchen | 9.321879418735037 |
stddev_pop
返回一组数字的总体标准差。
参数
- expression: 要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
查看 stddev_pop
查询示例
以下示例使用InfluxDB 入门教程中提供的示例数据集。
SELECT
room,
stddev_pop(co) AS stddev_pop
FROM home
GROUP BY room
room | stddev_pop |
---|
Kitchen | 8.956172047894082 |
Living Room | 5.654761830612032 |
stddev_samp
返回一组数字的样本标准差。
参数
- expression: 要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
查看 stddev_samp
查询示例
以下示例使用InfluxDB 入门教程中提供的示例数据集。
SELECT
room,
stddev_samp(co) AS stddev_samp
FROM home
GROUP BY room
room | stddev_samp |
---|
Living Room | 5.885662718931967 |
Kitchen | 9.321879418735037 |
var
返回一组数字的统计方差。
参数
- expression: 要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
查看 var
查询示例
以下示例使用InfluxDB 入门教程中提供的示例数据集。
SELECT
room,
var(co) AS var
FROM home
GROUP BY room
room | var |
---|
Living Room | 34.64102564102564 |
Kitchen | 86.89743589743587 |
var_pop
返回一组数字的统计总体方差。
参数
- expression: 要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
查看 var_pop
查询示例
以下示例使用InfluxDB 入门教程中提供的示例数据集。
SELECT
room,
var_pop(co) AS var_pop
FROM home
GROUP BY room
room | var_pop |
---|
Living Room | 31.976331360946745 |
Kitchen | 80.21301775147927 |
var_samp
返回一组数字的统计样本方差。
参数
- expression: 要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
查看 var_samp
查询示例
以下示例使用InfluxDB 入门教程中提供的示例数据集。
SELECT
room,
var_samp(co) AS var_samp
FROM home
GROUP BY room
room | var_samp |
---|
Kitchen | 86.89743589743587 |
Living Room | 34.64102564102564 |
近似聚合函数
approx_distinct
返回使用 HyperLogLog 算法计算的近似不同输入值的数量。
approx_distinct(expression)
参数
- expression: 要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
查看 approx_distinct
查询示例
以下示例使用InfluxDB 入门教程中提供的示例数据集。
SELECT
room,
approx_distinct(co::string) AS approx_distinct
FROM home
GROUP BY room
room | approx_distinct |
---|
Living Room | 7 |
Kitchen | 8 |
返回输入值的近似中值(第 50 百分位数)。它是 approx_percentile_cont(x, 0.5)
的别名。
approx_median(expression)
参数
- expression: 要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
approx_percentile_cont
使用 t-digest 算法返回输入值的近似百分位数。
approx_percentile_cont(expression, percentile, centroids)
参数
expression: 要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
percentile: 要计算的百分位数。必须是介于 0 和 1 之间的浮点值(包含 0 和 1)。
centroids: 在 t-digest 算法中使用的质心数。默认值为 100。
如果唯一值的数量等于或少于此数量,您可以期望获得精确的结果。质心数越高,近似值越精确,但计算所需的内存也越多。
查看 approx_percentile_cont
查询示例
以下示例使用InfluxDB 入门教程中提供的示例数据集。
SELECT
room,
approx_percentile_cont(temp, 0.99) AS "99th_percentile"
FROM home
GROUP BY room
room | 99th_percentile |
---|
Kitchen | 23.3 |
Living Room | 22.8 |
approx_percentile_cont_with_weight
使用 t-digest 算法返回输入值的加权近似百分位数。
approx_percentile_cont_with_weight(expression, weight, percentile)
参数
- expression: 要操作的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
- weight: 用作权重的表达式。可以是常量、列或函数,以及算术运算符的任意组合。
- percentile: 要计算的百分位数。必须是介于 0 和 1 之间的浮点值(包含 0 和 1)。
查看 approx_percentile_cont_with_weight
查询示例
以下示例使用InfluxDB 入门教程中提供的示例数据集。
SELECT
room,
approx_percentile_cont_with_weight(temp, co, 0.99) AS "co_weighted_99th_percentile"
FROM home
GROUP BY room
room | co_weighted_99th_percentile |
---|
Kitchen | 23.3 |
Living Room | 22.8 |
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB 3 Core 和本文档的反馈和错误报告。要获得支持,请使用以下资源
拥有年度合同或支持合同的客户可以联系 InfluxData 支持。