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

Timescale Cloud:性能、扩展、企业级

自托管产品

MST

简介

获取列中 N 个最小的值,每个值都附带相关数据。例如,可以返回一个伴随列或整行。

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

要获取附带数据的 N 个最大值,请使用 max_n_by()。要获取不附带数据的 N 个最小值,请使用 min_n()

相关超函数组

聚合器

min_n_by
跟踪一组值中的最小值和相关数据

访问器

into_values
从 MinNBy 聚合中返回最低值和相关数据

汇总器

rollup
组合多个 MinNBy 聚合
min_n_by(
value BIGINT | DOUBLE PRECISION | TIMESTAMPTZ,
data ANYELEMENT,
capacity BIGINT
) MinNBy

构建一个聚合器,用于跟踪通过它的最小值以及与这些值一起传递的相关数据。

必选参数
名称类型描述
valueBIGINTDOUBLE PRECISIONTIMESTAMPTZ传入聚合器中的值
dataANYELEMENT与特定值关联的数据
capacityBIGINT要保留的值的数量。
返回值
类型描述
min_n_byMinNBy编译后的聚合器。请注意,具体类型根据输入类型为 MinByIntsMinByFloatsMinByTimes
into_values(
agg MinNBy,
dummy ANYELEMENT
) TABLE (
value BIGINT | DOUBLE PRECISION | TIMESTAMPTZ, data ANYELEMENT
)

这会返回聚合器中最小的值以及与之关联的对应值。请注意,PostgresQL 需要一个与关联值类型匹配的输入参数,以便确定响应类型。

必选参数
名称类型描述
aggMinNBy返回结果的聚合器。请注意,此处的确切类型会根据存储数据类型而异。
dummyANYELEMENT这纯粹是为了告知 PostgresQL 响应类型。通常会将 NULL 转换为适当的类型。
返回值
类型描述
into_valuesTABLE (value BIGINTDOUBLE PRECISIONTIMESTAMPTZ, data ANYELEMENT)创建此聚合器时看到的最小值和相关数据。
示例

找出 i * 13 % 10007 中 i 从 1 到 10000 的最小 5 个值,以及生成该模数的整数运算结果

SELECT into_values(
min_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
-------------
(1,9)
(2,5)
(3,1)
(4,10)
(5,6)
rollup(
agg MinNBy
) MinNBy

此聚合器结合了其他 min_n_by 聚合器生成的聚合,并返回所有聚合数据中找到的最小值和相关数据。

必选参数
名称类型描述
aggMinNBy正在组合的聚合器
返回值
类型描述
rollupMinNBy对所有贡献值进行聚合。

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

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 min_n_by(price * volume, stock_sales, 10)
FROM stock_sales
),
NULL::stock_sales);

关键词

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