LIMIT 和 SLIMIT 子句
使用 LIMIT
和 SLIMIT
限制每个查询返回的数据点和序列数量。
LIMIT 子句
LIMIT <N>
从指定的测量返回前 N
个数据点。
语法
SELECT_clause FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] LIMIT <N>
N
指定从指定测量返回的数据点数量。如果 N
大于测量中的数据点数量,InfluxDB 将返回测量中的所有数据点。
重要提示: LIMIT
子句必须按照上述语法中概述的顺序出现。
示例
限制返回的数据点数量
SELECT "water_level","location" FROM "h2o_feet" LIMIT 3
输出
time | water_level | location |
---|
2019-08-17T00:00:00Z | 8.1200000000 | coyote_creek |
2019-08-17T00:00:00Z | 2.0640000000 | santa_monica |
2019-08-17T00:06:00Z | 8.0050000000 | coyote_creek |
该查询从 h2o_feet
测量返回由时间戳确定的三个最旧的数据点。
限制返回的数据点数量并包含 GROUP BY
子句
SELECT MEAN("water_level") FROM "h2o_feet" WHERE time >= '2019-08-18T00:00:00Z' AND time <= '2019-08-18T00:42:00Z' GROUP BY *,time(12m) LIMIT 2
输出
time | mean |
---|
2019-08-18T00:00:00Z | 8.4615000000 |
2019-08-18T00:12:00Z | 8.2725000000 |
time | mean |
---|
2019-08-18T00:00:00Z | 2.3655000000 |
2019-08-18T00:12:00Z | 2.3360000000 |
此查询使用 InfluxQL MEAN() 函数和 GROUP BY
子句来计算每个标签以及查询时间范围内的每个 12 分钟间隔的平均 water_level
。LIMIT 2
请求两个最旧的 12 分钟平均值(由时间戳确定)。
请注意,如果没有 LIMIT 2
,则查询将为每个序列返回四个数据点;查询时间范围内的每个 12 分钟间隔各一个。
SLIMIT 子句
SLIMIT <N>
从指定测量中的 N
个序列返回每个数据点。
语法
SELECT_clause FROM_clause [WHERE_clause] GROUP BY *[,time(<time_interval>)] [ORDER_BY_clause] SLIMIT <N>
N
指定从指定测量返回的序列数量。如果 N
大于测量中的序列数量,InfluxDB 将返回该测量中的所有序列。
SLIMIT
查询必须包含 GROUP BY *
。请注意,SLIMIT
子句必须按照上述语法中概述的顺序出现。
示例
限制返回的序列数量
SELECT "water_level" FROM "h2o_feet" GROUP BY * SLIMIT 1
输出
time | water_level |
---|
2019-08-17T00:00:00Z | 8.1200000000 |
2019-08-17T00:06:00Z | 8.0050000000 |
2019-08-17T00:12:00Z | 7.8870000000 |
2019-08-17T00:18:00Z | 7.7620000000 |
2019-08-17T00:24:00Z | 7.6350000000 |
2019-08-17T00:30:00Z | 7.5000000000 |
2019-08-17T00:36:00Z | 7.3720000000 |
上面的结果仅包含前几行,因为数据集非常大。该查询从与 h2o_feet
测量关联的序列之一返回所有 water_level
数据点。
限制返回的序列数量并包含 GROUP BY time()
子句
SELECT MEAN("water_level") FROM "h2o_feet" WHERE time >= '2019-08-18T00:00:00Z' AND time <= '2019-08-18T00:42:00Z' GROUP BY *,time(12m) SLIMIT 1
输出
time | mean |
---|
2019-08-18T00:00:00Z | 8.4615000000 |
2019-08-18T00:12:00Z | 8.2725000000 |
2019-08-18T00:24:00Z | 8.0710000000 |
2019-08-18T00:36:00Z | 7.8330000000 |
该查询在 GROUP BY 子句中使用 InfluxQL MEAN() 函数和时间间隔来计算查询时间范围内每个 12 分钟间隔的平均 water_level
。
SLIMIT 1
请求与 h2o_feet
测量关联的单个序列。
请注意,如果没有 SLIMIT 1
,则查询将返回与 h2o_feet
测量关联的两个序列的结果:location=coyote_creek
和 location=santa_monica
。
LIMIT 和 SLIMIT 结合使用
LIMIT <N>
后跟 SLIMIT <2>
从指定测量中的 N2
个序列返回前 N1
个数据点。
语法
SELECT_clause FROM_clause [WHERE_clause] GROUP BY *[,time(<time_interval>)] [ORDER_BY_clause] LIMIT <N1> SLIMIT <N2>
N1
指定每个测量返回的数据点数量。如果 N1
大于测量中的数据点数量,InfluxDB 将返回该测量中的所有数据点。
N2
指定从指定测量返回的序列数量。如果 N2
大于测量中的序列数量,InfluxDB 将返回该测量中的所有序列。
SLIMIT
查询必须包含 GROUP BY *
。请注意,SLIMIT
子句必须按照上述语法中概述的顺序出现。
示例
限制返回的数据点和序列数量
SELECT "water_level" FROM "h2o_feet" GROUP BY * LIMIT 3 SLIMIT 1
输出
time | water_level |
---|
2019-08-17T00:00:00Z | 8.1200000000 |
2019-08-17T00:06:00Z | 8.0050000000 |
2019-08-17T00:12:00Z | 7.8870000000 |
该查询从与测量 h2o_feet
关联的序列之一返回由时间戳确定的三个最旧的数据点。
限制返回的数据点和序列数量并包含 GROUP BY time()
子句
SELECT MEAN("water_level") FROM "h2o_feet" WHERE time >= '2019-08-18T00:00:00Z' AND time <= '2019-08-18T00:42:00Z' GROUP BY *,time(12m) LIMIT 2 SLIMIT 1
输出
time | mean |
---|
2019-08-18T00:00:00Z | 8.4615000000 |
2019-08-18T00:12:00Z | 8.2725000000 |
该查询在 GROUP BY 子句中使用 InfluxQL 函数 MEAN() 和时间间隔来计算查询时间范围内每个 12 分钟间隔的平均 water_level
。LIMIT 2
请求两个最旧的 12 分钟平均值(由时间戳确定),SLIMIT 1
请求与 h2o_feet
测量关联的单个序列。
请注意,如果没有 LIMIT 2 SLIMIT 1
,则查询将为与 h2o_feet
测量关联的两个序列中的每个序列返回四个数据点。
支持和反馈
感谢您成为我们社区的一份子!我们欢迎并鼓励您提供关于 InfluxDB 和本文档的反馈和错误报告。要获得支持,请使用以下资源
拥有年度或支持合同的客户 可以联系 InfluxData 支持。