聚合函数¶
概览¶
聚合函数对一组输入行进行计算,并为每个分组生成一个结果。本页中的函数可在 Polars SQL 中使用。
除 count()、count_if() 和 approx_distinct() 外,聚合函数会忽略空输入值;如果没有非空输入值,则返回 null。例如,对于空输入分组,sum() 返回 null 而不是零,avg() 在计数时不包含 null 值。
通用聚合函数¶
- any_value(x) -> [same as input]()¶
这是
arbitrary()的别名。
- arbitrary(x) -> [same as input]()¶
如果存在,则返回
x的任意一个非空值。
- avg(x) -> double()¶
返回所有非空输入值的平均值(算术平均值)。
SELECT avg(v) FROM (VALUES (1), (NULL), (3)) AS t(v); -- 2.000
- count(*) -> bigint()¶
返回输入行数。
SELECT count(*) FROM (VALUES (1), (NULL), (3)) AS t(v); -- 3
- count(x) -> bigint()¶
返回非空输入值的数量。
SELECT count(v) FROM (VALUES (1), (NULL), (3)) AS t(v); -- 2
- count_if(x) -> bigint()¶
返回
TRUE输入值的数量。SELECT count_if(flag) FROM (VALUES (TRUE), (FALSE), (NULL)) AS t(flag); -- 1
- max(x) -> [same as input]()¶
返回最大的非空输入值。
SELECT max(v) FROM (VALUES (1), (NULL), (3)) AS t(v); -- 3
- min(x) -> [same as input]()¶
返回最小的非空输入值。
SELECT min(v) FROM (VALUES (1), (NULL), (3)) AS t(v); -- 1
- sum(x) -> [same as input]()¶
返回所有非空输入值的和。
SELECT sum(v) FROM (VALUES (1), (NULL), (3)) AS t(v); -- 4
近似聚合函数¶
- approx_distinct(x) -> bigint()¶
返回不同非空输入值数量的近似值。该函数提供
count(DISTINCT x)的近似结果。如果所有输入值均为 null,则返回零。SELECT approx_distinct(v) FROM (VALUES (1), (1), (2), (NULL)) AS t(v); -- 2
统计聚合函数¶
- corr(y, x) -> double()¶
返回非空输入对的相关系数。
SELECT corr(y, x) FROM (VALUES (1, 2), (3, 4), (5, 6)) AS t(y, x); -- 1.0
- covar_pop(y, x) -> double()¶
返回非空输入对的总体协方差。
SELECT covar_pop(y, x) FROM (VALUES (1, 2), (3, 4), (5, 6)) AS t(y, x); -- 2.6666666666666665
- covar_samp(y, x) -> double()¶
返回非空输入对的样本协方差。
SELECT covar_samp(y, x) FROM (VALUES (1, 2), (3, 4), (5, 6)) AS t(y, x); -- 4.0
- regr_count(y, x) -> bigint()¶
返回
y和x均为非空的输入行数。y是因变量,x是自变量。
- regr_avgx(y, x) -> double()¶
返回非空输入对中自变量的平均值。
- regr_avgy(y, x) -> double()¶
返回非空输入对中因变量的平均值。
- regr_sxx(y, x) -> double()¶
返回非空输入对中自变量的平方和。
- regr_syy(y, x) -> double()¶
返回非空输入对中因变量的平方和。
- regr_sxy(y, x) -> double()¶
返回非空输入对中因变量和自变量乘积的总和。
- regr_slope(y, x) -> double()¶
返回线性回归直线的斜率。
y是因变量,x是自变量。
- regr_intercept(y, x) -> double()¶
返回线性回归直线的截距。
y是因变量,x是自变量。
- regr_r2(y, x) -> double()¶
返回线性回归的决定系数。
SELECT regr_count(y, x), regr_avgx(y, x), regr_avgy(y, x), regr_sxx(y, x), regr_syy(y, x), regr_sxy(y, x), regr_slope(y, x), regr_intercept(y, x), regr_r2(y, x) FROM ( VALUES (1, 2), (3, 4), (5, 6), (CAST(NULL AS INTEGER), 8), (9, CAST(NULL AS INTEGER)) ) AS t(y, x); -- 3, 4.0, 3.0, 8.0, 8.0, 8.0, 1.0, -1.0, 1.0
- stddev(x) -> double()¶
这是
stddev_samp()的别名。
- stddev_pop(x) -> double()¶
返回所有非空输入值的总体标准差。
- stddev_samp(x) -> double()¶
返回所有非空输入值的样本标准差。
- variance(x) -> double()¶
这是
var_samp()的别名。
- var_pop(x) -> double()¶
返回所有非空输入值的总体方差。
- var_samp(x) -> double()¶
返回所有非空输入值的样本方差。
SELECT var_pop(v), stddev_pop(v), var_samp(v), variance(v), stddev_samp(v), stddev(v) FROM (VALUES (1), (2), (3)) AS t(v); -- 0.6666666666666666, 0.816496580927726, 1.0, 1.0, 1.0, 1.0