stats_agg()(单变量)函数
工具包TimescaleDB Toolkit 函数在 Timescale 社区版中可用。它们已自动包含在 Timescale 中,但对于自托管的 TimescaleDB,必须单独安装。点击了解更多。Timescale Cloud:性能、扩展性、企业级
自托管产品
MST
简介
使用这组函数执行常见的统计分析,例如计算平均值和标准差。这些函数与 PostgreSQL 的统计聚合函数类似,但它们包含更多功能,并且在连续聚合和窗口函数中更易于使用。
这些函数作用于一维数据。要处理二维数据,例如执行线性回归,请参阅二维 stats_agg
函数。
相关超函数组
聚合
- stats_agg(单变量)
- 将数据聚合成中间统计聚合形式,用于进一步计算
访问器
汇总
stats_agg(value DOUBLE PRECISION) RETURNS StatsSummary1D
这是对一维数据执行任何统计聚合计算的第一步。使用 stats_agg
从数据中创建中间聚合(StatsSummary1D
)。然后,该中间形式可由本组中的一个或多个访问器用于计算最终结果。(可选)在应用访问器之前,可以使用 rollup()
或 rolling()
组合多个此类中间聚合对象。stats_agg
非常适合创建可用于多种目的的连续聚合。例如,您可以使用 stats_agg
创建连续聚合来计算平均值和总和。之后,您可以重用相同的 StatsSummary1D
对象,从相同的连续聚合中计算标准差。
必需参数
名称 | 类型 | 描述 |
---|---|---|
value | DOUBLE PRECISION | 用于统计聚合的变量。 |
返回值
列 | 类型 | 描述 |
---|---|---|
stats_agg | StatsSummary1D | 统计聚合,包含变量的中间形式数据。将此聚合传递给统计聚合 API 中的访问器函数以执行最终计算。或者,将此聚合传递给 rollup 函数以将多个统计聚合组合成更大的聚合。 |
average(summary StatsSummary1D) RETURNS DOUBLE PRECISION
从统计聚合中的值计算简单平均值(或均值)。
必需参数
名称 | 类型 | 描述 |
---|---|---|
summary | StatsSummary1D | 由 stats_agg 调用生成的统计聚合 |
返回值
列 | 类型 | 描述 |
---|---|---|
average | DOUBLE PRECISION | 统计聚合中值的平均值 |
示例
计算从 0 到 100 的整数平均值
SELECT average(stats_agg(data))FROM generate_series(0, 100) data;
average-----------50
kurtosis(summary StatsSummary1D,[ method TEXT ]) DOUBLE PRECISION
从统计聚合中的值计算峰度。峰度是第四统计矩。它衡量数据分布与正态分布相比的“尾部厚度”。
必需参数
名称 | 类型 | 描述 |
---|---|---|
summary | StatsSummary1D | 由 stats_agg 调用生成的统计聚合 |
可选参数
名称 | 类型 | 描述 |
---|---|---|
method | TEXT | 计算峰度的方法。两个选项是 population (总体)和 sample (样本),可缩写为 pop 或 samp 。默认为 sample 。 |
返回值
列 | 类型 | 描述 |
---|---|---|
kurtosis | DOUBLE PRECISION | 统计聚合中值的峰度 |
示例
计算包含 0 到 100 整数的样本的峰度
SELECT kurtosis(stats_agg(data))FROM generate_series(0, 100) data;
kurtosis----------1.78195
num_vals(summary StatsSummary1D) RETURNS BIGINT
计算统计聚合中包含的值的数量。
必需参数
名称 | 类型 | 描述 |
---|---|---|
summary | StatsSummary1D | 由 stats_agg 调用生成的统计聚合 |
返回值
列 | 类型 | 描述 |
---|---|---|
num_vals | DOUBLE PRECISION | 统计聚合中的值数量 |
示例
计算 0 到 100(含)的值的数量
SELECT num_vals(stats_agg(data))FROM generate_series(0, 100) data;
num_vals--------101
skewness(summary StatsSummary1D,[ method TEXT ]) RETURNS DOUBLE PRECISION
从统计聚合中的值计算偏度。偏度是第三统计矩。它衡量数据分布的不对称性。
必需参数
名称 | 类型 | 描述 |
---|---|---|
summary | StatsSummary1D | 由 stats_agg 调用生成的统计聚合 |
可选参数
名称 | 类型 | 描述 |
---|---|---|
method | TEXT | 计算偏度的方法。两个选项是 population (总体)和 sample (样本),可缩写为 pop 或 samp 。默认为 sample 。 |
返回值
列 | 类型 | 描述 |
---|---|---|
skewness | DOUBLE PRECISION | 统计聚合中值的偏度 |
示例
计算包含 0 到 100 整数的样本的偏度
SELECT skewness(stats_agg(data))FROM generate_series(0, 100) data;
skewness_x----------0
stddev(summary StatsSummary1D,[ method TEXT ]) RETURNS DOUBLE PRECISION
从统计聚合中的值计算标准差。
必需参数
名称 | 类型 | 描述 |
---|---|---|
summary | StatsSummary1D | 由 stats_agg 调用生成的统计聚合 |
可选参数
名称 | 类型 | 描述 |
---|---|---|
method | TEXT | 计算标准差的方法。两个选项是 population (总体)和 sample (样本),可缩写为 pop 或 samp 。默认为 sample 。 |
返回值
列 | 类型 | 描述 |
---|---|---|
stddev | DOUBLE PRECISION | 统计聚合中值的标准差 |
示例
计算包含 0 到 100 整数的样本的标准差
SELECT stddev(stats_agg(data))FROM generate_series(0, 100) data;
stddev_y--------29.3002
sum(summary StatsSummary1D) RETURNS DOUBLE PRECISION
计算统计聚合中包含的值的总和。
必需参数
名称 | 类型 | 描述 |
---|---|---|
summary | StatsSummary1D | 由 stats_agg 调用生成的统计聚合 |
返回值
列 | 类型 | 描述 |
---|---|---|
sum | DOUBLE PRECISION | 统计聚合中值的总和 |
示例
计算从 0 到 100 的整数总和
SELECT sum(stats_agg(data))FROM generate_series(0, 100) data;
sum-----5050
variance(summary StatsSummary1D,[ method TEXT ]) RETURNS DOUBLE PRECISION
从统计聚合中的值计算方差。
必需参数
名称 | 类型 | 描述 |
---|---|---|
summary | StatsSummary1D | 由 stats_agg 调用生成的统计聚合 |
可选参数
名称 | 类型 | 描述 |
---|---|---|
method | TEXT | 计算标准差的方法。两个选项是 population (总体)和 sample (样本),可缩写为 pop 或 samp 。默认为 sample 。 |
返回值
列 | 类型 | 描述 |
---|---|---|
variance | DOUBLE PRECISION | 统计聚合中值的方差 |
示例
计算包含 0 到 100 整数的样本的方差
SELECT variance(stats_agg(data))FROM generate_series(0, 100) data;
variance----------858.5
rolling(ss StatsSummary1D) RETURNS StatsSummary1D
将多个中间统计聚合(StatsSummary1D
)对象组合成一个 StatsSummary1D
对象。它针对在窗口函数上下文中计算翻转窗口统计聚合进行了优化。
注意
这对于从连续聚合中计算翻转窗口聚合特别有用。它可以快几个数量级,因为它使用了逆转换和组合函数,但在特殊情况下可能会出现较大的浮点误差。对于非窗口函数上下文中的重新聚合,例如将每小时桶组合成每日桶,请参阅 rollup()
。
必需参数
名称 | 类型 | 描述 |
---|---|---|
summary | StatsSummary1D | 由 stats_agg 调用生成的统计聚合 |
返回值
列 | 类型 | 描述 |
---|---|---|
rolling | StatsSummary1D | 通过组合输入统计聚合生成的新统计聚合 |
示例
组合每小时连续聚合以创建翻转窗口每日聚合。使用适当的访问器计算平均值和标准差
CREATE MATERIALIZED VIEW foo_hourlyWITH (timescaledb.continuous)AS SELECTtime_bucket('1h'::interval, ts) AS bucket,stats_agg(value) as statsFROM fooGROUP BY 1;SELECTbucket,average(rolling(stats) OVER (ORDER BY bucket RANGE '1 day' PRECEDING)),stddev(rolling(stats) OVER (ORDER BY bucket RANGE '1 day' PRECEDING)),FROM foo_hourly;
rollup(ss StatsSummary1D) RETURNS StatsSummary1D
将由 stats_agg
(单变量)生成的多个中间统计聚合(StatsSummary1D
)对象组合成一个单一的中间 StatsSummary1D
对象。例如,您可以使用 rollup
将 15 分钟桶的统计聚合组合成每日桶。对于在窗口函数中使用,请参阅 rolling()
。
必需参数
名称 | 类型 | 描述 |
---|---|---|
summary | StatsSummary1D | 由 stats_agg 调用生成的统计聚合 |
返回值
列 | 类型 | 描述 |
---|---|---|
rollup | StatsSummary1D | 通过组合输入统计聚合生成的新统计聚合 |
创建一个统计聚合来汇总关于变量 val1
的每日统计数据。使用该统计聚合来计算变量的平均值、标准差和偏度
WITH t as (SELECTtime_bucket('1 day'::interval, ts) as dt,stats_agg(val1) AS stats1DFROM fooWHERE id = 'bar'GROUP BY time_bucket('1 day'::interval, ts))SELECTaverage(stats1D),stddev(stats1D),skewness(stats1D)FROM t;
关键词
在本页发现问题?报告问题 或 在 GitHub 上编辑此页面
在 GitHub 上。