SQL 聚合函数
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
avg
返回指定列中数值的平均值。
参数
- expression:要操作的表达式。 可以是常量、列或函数,以及算术运算符的任意组合。
别名
查看 avg
查询示例
SELECT
location,
avg(water_level) AS water_level_avg
FROM h2o_feet
GROUP BY 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
位置 | 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
位置 | 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
位置 | 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
位置 | 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
位置 | 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
位置 | 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
位置 | 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
位置 | 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
位置 | 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
位置 | 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
位置 | 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
房间 | correlation |
---|
客厅 | 0.43665270457835725 |
厨房 | 0.6741766954929539 |
covar
返回一组数字对的协方差。
covar(expression1, expression2)
参数
- expression1:要操作的第一个列或文字值。
- expression2:要操作的第二个列或文字值。
查看 covar
查询示例
以下示例使用 InfluxDB 入门教程 中提供的示例数据集。
SELECT
room,
covar(hum, temp) AS covar
FROM home
GROUP BY room
房间 | covar |
---|
客厅 | 0.03346153846153959 |
厨房 | 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
房间 | covar_pop |
---|
厨房 | 0.10278106508875783 |
客厅 | 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
房间 | covar_samp |
---|
厨房 | 0.11134615384615432 |
客厅 | 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
位置 | 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
位置 | 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
位置 | 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
位置 | 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
位置 | 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
位置 | 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
位置 | 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
位置 | 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
位置 | 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
房间 | stddev |
---|
客厅 | 5.885662718931967 |
厨房 | 9.321879418735037 |
stddev_pop
返回一组数字的总体标准差。
参数
- expression:要操作的表达式。 可以是常量、列或函数,以及算术运算符的任意组合。
查看 stddev_pop
查询示例
以下示例使用 InfluxDB 入门教程 中提供的示例数据集。
SELECT
room,
stddev_pop(co) AS stddev_pop
FROM home
GROUP BY room
房间 | stddev_pop |
---|
厨房 | 8.956172047894082 |
客厅 | 5.654761830612032 |
stddev_samp
返回一组数字的样本标准差。
参数
- expression:要操作的表达式。 可以是常量、列或函数,以及算术运算符的任意组合。
查看 stddev_samp
查询示例
以下示例使用 InfluxDB 入门教程 中提供的示例数据集。
SELECT
room,
stddev_samp(co) AS stddev_samp
FROM home
GROUP BY room
房间 | stddev_samp |
---|
客厅 | 5.885662718931967 |
厨房 | 9.321879418735037 |
var
返回一组数字的统计方差。
参数
- expression:要操作的表达式。 可以是常量、列或函数,以及算术运算符的任意组合。
查看 var
查询示例
以下示例使用 InfluxDB 入门教程 中提供的示例数据集。
SELECT
room,
var(co) AS var
FROM home
GROUP BY room
房间 | var |
---|
客厅 | 34.64102564102564 |
厨房 | 86.89743589743587 |
var_pop
返回一组数字的统计总体方差。
参数
- expression:要操作的表达式。 可以是常量、列或函数,以及算术运算符的任意组合。
查看 var_pop
查询示例
以下示例使用 InfluxDB 入门教程 中提供的示例数据集。
SELECT
room,
var_pop(co) AS var_pop
FROM home
GROUP BY room
房间 | var_pop |
---|
客厅 | 31.976331360946745 |
厨房 | 80.21301775147927 |
var_samp
返回一组数字的统计样本方差。
参数
- expression:要操作的表达式。 可以是常量、列或函数,以及算术运算符的任意组合。
查看 var_samp
查询示例
以下示例使用 InfluxDB 入门教程 中提供的示例数据集。
SELECT
room,
var_samp(co) AS var_samp
FROM home
GROUP BY room
房间 | var_samp |
---|
厨房 | 86.89743589743587 |
客厅 | 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
返回输入值的近似中位数(第 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
房间 | 99th_percentile |
---|
厨房 | 23.3 |
客厅 | 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
房间 | co_weighted_99th_percentile |
---|
厨房 | 23.3 |
客厅 | 22.8 |
支持和反馈
感谢您成为我们社区的一份子! 我们欢迎并鼓励您提供关于 InfluxDB Clustered 和本文档的反馈和错误报告。 要获得支持,请使用以下资源
拥有年度合同或支持合同的客户可以联系 InfluxData 支持。