LIMIT及SLIMIT子句
LIMIT和SLIMIT分别限制每个查询返回的数据点个数和序列个数。
LIMIT子句
LIMIT <N> 返回指定measurement中的前N个数据点。
语法
SELECT_clause [INTO_clause] FROM_clause [WHERE_clause] [GROUP_BY_clause] [ORDER_BY_clause] LIMIT <N>
语法描述
N表示从指定measurement中返回的数据点个数。如果N大于measurement中所有数据点的个数,TSDB For InfluxDB®将返回该measurement中的所有数据点。请注意,LIMIT子句必须按照上述语法中的顺序使用。
示例
限制返回的数据点个数
> SELECT "water_level","location" FROM "h2o_feet" LIMIT 3name: h2o_feettime water_level location---- ----------- --------2015-08-18T00:00:00Z 8.12 coyote_creek2015-08-18T00:00:00Z 2.064 santa_monica2015-08-18T00:06:00Z 8.005 coyote_creek
该查询从measurement h2o_feet中返回三个最早的数据点(由时间戳决定)。
限制返回的数据点个数并且包含GROUP BY子句
> SELECT MEAN("water_level") FROM "h2o_feet" WHERE time >= '2015-08-18T00:00:00Z' AND time <= '2015-08-18T00:42:00Z' GROUP BY *,time(12m) LIMIT 2name: h2o_feettags: location=coyote_creektime mean---- ----2015-08-18T00:00:00Z 8.06252015-08-18T00:12:00Z 7.8245name: h2o_feettags: location=santa_monicatime mean---- ----2015-08-18T00:00:00Z 2.092015-08-18T00:12:00Z 2.077
该查询使用了一个InfluxQL函数和一个GROUP BY子句,计算每个tag以及查询时间范围内每12分钟的water_level的平均值。LIMIT 2表示该查询请求的是两个最早的12分钟间隔的平均值(由时间戳决定)。
请注意,如果以上查询语句中没有使用LIMIT 2,那么每个序列会返回四个数据点:在查询的时间范围内每隔十二分钟有一个数据点。
SLIMIT子句
SLIMIT <N> 返回指定measurement的前N个序列中的每一个数据点。
语法
SELECT_clause [INTO_clause] FROM_clause [WHERE_clause] GROUP BY *[,time(<time_interval>)] [ORDER_BY_clause] SLIMIT <N>
语法描述
N表示从指定measurement中返回的序列个数。如果N大于measurement中所有序列的个数,TSDB For InfluxDB®将返回该measurement中的所有序列。请注意,SLIMIT子句必须按照上述语法中的顺序使用。
示例
限制返回的序列个数
> SELECT "water_level" FROM "h2o_feet" GROUP BY * SLIMIT 1name: h2o_feettags: location=coyote_creektime water_level---- -----2015-08-18T00:00:00Z 8.122015-08-18T00:06:00Z 8.0052015-08-18T00:12:00Z 7.887[...]2015-09-18T16:12:00Z 3.4022015-09-18T16:18:00Z 3.3142015-09-18T16:24:00Z 3.235
该查询从measurement h2o_feet的一个序列中返回所有water_level数据点。
限制返回的序列个数并且包含GROUP BY time()子句
> SELECT MEAN("water_level") FROM "h2o_feet" WHERE time >= '2015-08-18T00:00:00Z' AND time <= '2015-08-18T00:42:00Z' GROUP BY *,time(12m) SLIMIT 1name: h2o_feettags: location=coyote_creektime mean---- ----2015-08-18T00:00:00Z 8.06252015-08-18T00:12:00Z 7.82452015-08-18T00:24:00Z 7.56752015-08-18T00:36:00Z 7.303
该查询使用了一个InfluxQL函数和GROUP BY子句中的时间间隔,计算查询时间范围内每12分钟的water_level的平均值。SLIMIT 1表示该查询请求的是measurement h2o_feet中的一个序列。
请注意,如果以上查询语句中没有使用SLIMIT 1,那么查询将返回measurement h2o_feet中的两个序列:location=coyote_creek和location=santa_monica。
LIMIT和SLIMIT
将SLIMIT <N>放在LIMIT <N>的后面,则返回指定measurement的N个序列中的前N个数据点。
语法
SELECT_clause [INTO_clause] FROM_clause [WHERE_clause] GROUP BY *[,time(<time_interval>)] [ORDER_BY_clause] LIMIT <N1> SLIMIT <N2>
语法描述
N1表示从measurement中返回的数据点个数。如果N1大于measurement中所有数据点的个数,TSDB For InfluxDB®将返回该measurement中的所有数据点。
N2表示从指定measurement中返回的序列个数。如果N2大于measurement中所有序列的个数,TSDB For InfluxDB®将返回该measurement中的所有序列。
请注意,LIMIT和SLIMIT子句必须按照上述语法中的顺序使用。
示例
限制返回的数据点个数和序列个数
> SELECT "water_level" FROM "h2o_feet" GROUP BY * LIMIT 3 SLIMIT 1name: h2o_feettags: location=coyote_creektime water_level---- -----------2015-08-18T00:00:00Z 8.122015-08-18T00:06:00Z 8.0052015-08-18T00:12:00Z 7.887
该查询从measurement h2o_feet的一个序列中返回三个最早的数据点。
限制返回的数据点个数和序列个数,并且包含GROUP BY time()子句
> SELECT MEAN("water_level") FROM "h2o_feet" WHERE time >= '2015-08-18T00:00:00Z' AND time <= '2015-08-18T00:42:00Z' GROUP BY *,time(12m) LIMIT 2 SLIMIT 1name: h2o_feettags: location=coyote_creektime mean---- ----2015-08-18T00:00:00Z 8.06252015-08-18T00:12:00Z 7.8245
该查询使用了一个InfluxQL函数和GROUP BY子句中的时间间隔,计算查询时间范围内每12分钟的water_level的平均值。LIMIT 2请求两个最早的12分钟间隔的平均值(由时间戳决定),SLIMIT 1请求measurement h2o_feet中的一个序列。
注意:如果以上查询语句中没有使用LIMIT 2 SLIMIT 1,那么查询将返回measurement h2o_feet中的两个序列,并且,每个序列返回四个数据点。
InfluxDB® is a trademark registered by InfluxData, which is not affiliated with, and does not endorse, TSDB for InfluxDB®.