min_n_by()函数
工具包TimescaleDB 工具包函数可在 Timescale 社区版下使用。它们会自动包含在 Timescale 中,但必须为自托管的 TimescaleDB 单独安装。点击了解更多。介绍
从列中获取 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
构造一个聚合,跟踪传递到它的最小值以及与值一起传递的一些关联数据。
必需参数
名称 | 类型 | 描述 |
---|---|---|
value | BIGINT , DOUBLE PRECISION , TIMESTAMPTZ | 传递到聚合的值 |
data | ANYELEMENT | 与特定值关联的数据 |
capacity | BIGINT | 要保留的值的数量。 |
返回
列 | 类型 | 描述 |
---|---|---|
min_n_by | MinNBy | 编译的聚合。请注意,确切类型取决于输入类型,可能是 MinByInts 、MinByFloats 或 MinByTimes |
into_values(agg MinNBy,dummy ANYELEMENT) TABLE (value BIGINT | DOUBLE PRECISION | TIMESTAMPTZ, data ANYELEMENT)
这将返回聚合看到的最小值以及与它们对应的关联值。请注意,PostgresQL 需要类型与关联值匹配的输入参数,以便确定响应类型。
必需参数
名称 | 类型 | 描述 |
---|---|---|
agg | MinNBy | 要从中返回结果的聚合。请注意,这里的确切类型根据存储的数据类型而有所不同。 |
dummy | ANYELEMENT | 这纯粹是为了通知 PostgresQL 响应类型。将 NULL 转换为适当的类型是典型的。 |
返回
列 | 类型 | 描述 |
---|---|---|
into_values | TABLE (value BIGINT , DOUBLE PRECISION , TIMESTAMPTZ, 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 divFROM generate_series(1,10000) as i) sub;
into_values-------------(1,9)(2,5)(3,1)(4,10)(5,6)
rollup(agg MinNBy) MinNBy
此聚合组合由其他 minnby 聚合生成的聚合,并返回所有聚合数据中找到的最小值和关联数据。
必需参数
名称 | 类型 | 描述 |
---|---|---|
agg | MinNBy | 要组合的聚合 |
返回
列 | 类型 | 描述 |
---|---|---|
rollup | MinNBy | 对所有贡献值的聚合。 |
此示例假设您有一个以这种格式显示股票交易的表
CREATE TABLE stock_sales(ts TIMESTAMPTZ,symbol TEXT,price FLOAT,volume INT);
找到表中的 10 个最小交易、它们发生的时间以及交易的符号。
SELECT(data).time,(data).symbol,value AS transactionFROMinto_values((SELECT min_n_by(price * volume, stock_sales, 10)FROM stock_sales),NULL::stock_sales);
关键字
在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页面。