KURTOSIS¶
返回非 NULL 记录的总体过量峰度。如果组内的所有记录都是 NULL,则函数返回 NULL。
以下公式用于计算总体过量峰度:
\[(n * (n+1))/((n-1) * (n-2) * (n-3)) * (n * m_4/(k_2)^2) - 3 * (n-1)^2 / ((n-2) * (n-3))\]
其中:
\(n\) 表示非 null 记录的数量。
\(m_4\) 表示样本第四个中心矩。
\(k_2\) 表示方差的对称无偏估计量。
语法¶
聚合函数
KURTOSIS( <expr> )
窗口函数
KURTOSIS( <expr> ) OVER ( [ PARTITION BY <expr2> ] )
实参¶
expr
这是一个计算结果为数值数据类型(INTEGER、FLOAT、DECIMAL 等)的表达式。
expr2
定义各个组或窗口的表达式。
返回¶
如果输入数据类型为 DOUBLE/FLOAT,则返回 DOUBLE。
如果输入数据类型是其他数值数据类型,则返回 DECIMAL。
使用说明¶
对于少于四条记录的输入,KURTOSIS 返回 NULL。
用作窗口函数时,此函数不支持:
OVER() 子句中的 ORDER BY 分子句。
窗口框架。
示例¶
创建表并加载数据:
create or replace table aggr(k int, v decimal(10,2), v2 decimal(10, 2)); insert into aggr values (1, 10, null), (2, 10, 12), (2, 20, 22), (2, 25, null), (2, 30, 35);
显示数据:
select * from aggr order by k, v; +---+-------+-------+ | K | V | V2 | |---+-------+-------| | 1 | 10.00 | NULL | | 2 | 10.00 | 12.00 | | 2 | 20.00 | 22.00 | | 2 | 25.00 | NULL | | 2 | 30.00 | 35.00 | +---+-------+-------+
查询数据:
select KURTOSIS(K), KURTOSIS(V), KURTOSIS(V2) from aggr; +----------------+-----------------+--------------+ | KURTOSIS(K) | KURTOSIS(V) | KURTOSIS(V2) | |----------------+-----------------+--------------| | 5.000000000000 | -2.324218750000 | NULL | +----------------+-----------------+--------------+