TimescaleDB API 参考超函数最小值和最大值

Timescale Cloud:性能、规模、企业级

自托管产品

MST

简介

从列中获取 N 个最大值,每个值都带有关联数据。例如,可以返回一个伴随列或整行。

max_n_by() 函数的结果与常规 SQL 查询 SELECT ... ORDER BY ... LIMIT n 相同。但与 SQL 查询不同的是,它们可以像其他聚合超函数一样进行组合和复合。

要获取带伴随数据的 N 个最小值,请使用 min_n_by()。要获取不带伴随数据的 N 个最大值,请使用 max_n()

相关超函数组

聚合

max_n_by
跟踪一组值中的最大值及关联数据

访问器

into_values
从 MaxNBy 聚合中返回最大值及关联数据

汇总

rollup
合并多个 MaxNBy 聚合
max_n_by(
value BIGINT | DOUBLE PRECISION | TIMESTAMPTZ,
data ANYELEMENT,
capacity BIGINT
) MaxNBy

构建一个聚合,它跟踪通过的最大值以及随值一起传递的一些关联数据。

必填参数
名称类型描述
BIGINT, DOUBLE PRECISION, TIMESTAMPTZ传递到聚合中的值
数据ANYELEMENT与特定值关联的数据
容量BIGINT要保留的值的数量。
返回
类型描述
max_n_byMaxNBy编译后的聚合。请注意,确切的类型将根据输入类型是 MaxByInts、MaxByFloats 还是 MaxByTimes 而有所不同
into_values(
agg MaxNBy,
dummy ANYELEMENT
) TABLE (
value BIGINT | DOUBLE PRECISION | TIMESTAMPTZ,
data ANYELEMENT
)

这将返回聚合所见的最大值及其关联值。请注意,PostgreSQL 需要一个与关联值类型匹配的输入参数,以便确定响应类型。

必填参数
名称类型描述
aggMaxNBy要返回结果的聚合。请注意,此处的确切类型因存储的数据类型而异。
dummyANYELEMENT这纯粹是为了通知 PostgreSQL 响应类型。通常将 NULL 转换为适当的类型。
返回
类型描述
into_valuesTABLE (value BIGINT, DOUBLE PRECISION, TIMESTAMPTZ, data ANYELEMENT)创建此聚合时所见的最大值及关联数据。
示例

找出 i = 1 到 10000 时,i * 13 % 10007 的前 5 个最大值,以及生成该模数的整数结果

SELECT into_values(
max_n_by(sub.mod, sub.div, 5),
NULL::INT)
FROM (
SELECT (i * 13) % 10007 AS mod, (i * 13) / 10007 AS div
FROM generate_series(1,10000) as i
) sub;
into_values
-------------
(10006,3)
(10005,7)
(10004,11)
(10003,2)
(10002,6)
rollup(
agg MaxNBy
) MaxNBy

此聚合合并由其他 max_n_by 聚合生成的聚合,并返回在所有聚合数据中找到的最大值及关联数据。

必填参数
名称类型描述
aggMaxNBy正在合并的聚合
返回
类型描述
rollupMaxNBy所有贡献值的聚合。

此示例假定您有一个以下格式的股票交易表

CREATE TABLE stock_sales(
ts TIMESTAMPTZ,
symbol TEXT,
price FLOAT,
volume INT
);

查找表中 10 笔最大的交易,它们发生的时间以及交易的符号

SELECT
(data).time,
(data).symbol,
value AS transaction
FROM
into_values((
SELECT max_n_by(price * volume, stock_sales, 10)
FROM stock_sales
),
NULL::stock_sales);

关键词

在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页面