min_n() 函数
工具包TimescaleDB 工具包函数在 Timescale 社区版下可用。 它们自动包含在 Timescale 中,但对于自托管的 TimescaleDB 必须单独安装。 点击了解更多。简介
从列中获取 N 个最小值。
min_n()
函数提供与常规 SQL 查询 SELECT ... ORDER BY ... LIMIT n
相同的结果。 但与 SQL 查询不同,它们可以像其他聚合 hyperfunction 一样进行组合和合并。
要获取 N 个最大值,请使用 max_n()
。 要获取带有随附数据的 N 个最小值,请使用 min_n_by()
。
相关 hyperfunction 组
聚合
- min_n
- 查找数据集中的最小值
访问器
- into_array
- 返回 MinN 聚合中最低值的数组
- into_values
- 返回 MinN 聚合中的最低值
汇总
- rollup
- 合并多个 MinN 聚合
min_n(value BIGINT | DOUBLE PRECISION | TIMESTAMPTZ,capacity BIGINT) MinN
构造一个聚合,用于跟踪传递给它的最小值。
必需参数
名称 | 类型 | 描述 |
---|---|---|
value | BIGINT , DOUBLE PRECISION , TIMESTAMPTZ | 传递到聚合中的值 |
capacity | BIGINT | 要保留的值的数量。 |
返回值
列 | 类型 | 描述 |
---|---|---|
min_n | MinN | 编译后的聚合。 请注意,确切的类型是 MinInts 、MinFloats 或 MinTimes ,具体取决于输入类型 |
into_array (agg MinN) BIGINT[] | DOUBLE PRECISION[] | TIMESTAMPTZ[]
返回聚合看到的 N 个最低值。 这些值格式化为升序排列的数组。
必需参数
名称 | 类型 | 描述 |
---|---|---|
agg | MinN | 要从中返回结果的聚合。 请注意,此处的确切类型因存储的数据类型而异。 |
返回值
列 | 类型 | 描述 |
---|---|---|
into_array | BIGINT[] , DOUBLE PRECISION[] , TIMESTAMPTZ[] | 创建此聚合时看到的最低值。 |
示例
查找 i = 1 到 10000 的 i * 13 % 10007
中的底部 5 个值
SELECT into_array(min_n(sub.val, 5))FROM (SELECT (i * 13) % 10007 AS valFROM generate_series(1,10000) as i) sub;
into_array---------------------------------{1,2,3,4,5}
into_values (agg MinN) SETOF BIGINT | SETOF DOUBLE PRECISION | SETOF TIMESTAMPTZ
返回聚合看到的 N 个最低值。
必需参数
名称 | 类型 | 描述 |
---|---|---|
agg | MinN | 要从中返回结果的聚合。 请注意,此处的确切类型因存储的数据类型而异。 |
返回值
列 | 类型 | 描述 |
---|---|---|
into_values | SETOF BIGINT , SETOF DOUBLE PRECISION , SETOF TIMESTAMPTZ | 创建此聚合时看到的最低值。 |
示例
查找 i = 1 到 10000 的 i * 13 % 10007
中的底部 5 个值
SELECT toolkit_experimental.into_array(toolkit_experimental.min_n(sub.val, 5))FROM (SELECT (i * 13) % 10007 AS valFROM generate_series(1,10000) as i) sub;
into_values---------------------------------12345
rollup(agg MinN) MinN
此聚合合并由其他 min_n
聚合生成的聚合,并返回在所有聚合数据中找到的最小值。
必需参数
名称 | 类型 | 描述 |
---|---|---|
agg | MinN | 正在合并的聚合 |
返回值
列 | 类型 | 描述 |
---|---|---|
rollup | MinN | 所有贡献值的聚合。 |
此示例假定您有一个股票交易表,格式如下
CREATE TABLE stock_sales(ts TIMESTAMPTZ,symbol TEXT,price FLOAT,volume INT);
您可以查询每天的 10 个最小交易
WITH t as (SELECTtime_bucket('1 day'::interval, ts) as day,min_n(price * volume, 10) AS daily_minFROM stock_salesGROUP BY time_bucket('1 day'::interval, ts))SELECTday, as_array(daily_max)FROM t;
关键词
在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页面。