LIMIT及SLIMIT子句

更新时间:

LIMITSLIMIT分别限制每个查询返回的数据点个数和序列个数。

LIMIT子句

LIMIT <N> 返回指定measurement中的前N个数据点。

语法

  1. 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子句必须按照上述语法中的顺序使用。

示例

限制返回的数据点个数

  1. > SELECT "water_level","location" FROM "h2o_feet" LIMIT 3
  2. name: h2o_feet
  3. time water_level location
  4. ---- ----------- --------
  5. 2015-08-18T00:00:00Z 8.12 coyote_creek
  6. 2015-08-18T00:00:00Z 2.064 santa_monica
  7. 2015-08-18T00:06:00Z 8.005 coyote_creek

该查询从measurement h2o_feet中返回三个最早的数据点(由时间戳决定)。

限制返回的数据点个数并且包含GROUP BY子句

  1. > 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
  2. name: h2o_feet
  3. tags: location=coyote_creek
  4. time mean
  5. ---- ----
  6. 2015-08-18T00:00:00Z 8.0625
  7. 2015-08-18T00:12:00Z 7.8245
  8. name: h2o_feet
  9. tags: location=santa_monica
  10. time mean
  11. ---- ----
  12. 2015-08-18T00:00:00Z 2.09
  13. 2015-08-18T00:12:00Z 2.077

该查询使用了一个InfluxQL函数和一个GROUP BY子句,计算每个tag以及查询时间范围内每12分钟的water_level的平均值。LIMIT 2表示该查询请求的是两个最早的12分钟间隔的平均值(由时间戳决定)。

请注意,如果以上查询语句中没有使用LIMIT 2,那么每个序列会返回四个数据点:在查询的时间范围内每隔十二分钟有一个数据点。

SLIMIT子句

SLIMIT <N> 返回指定measurement的前N个序列中的每一个数据点。

语法

  1. 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子句必须按照上述语法中的顺序使用。

示例

限制返回的序列个数

  1. > SELECT "water_level" FROM "h2o_feet" GROUP BY * SLIMIT 1
  2. name: h2o_feet
  3. tags: location=coyote_creek
  4. time water_level
  5. ---- -----
  6. 2015-08-18T00:00:00Z 8.12
  7. 2015-08-18T00:06:00Z 8.005
  8. 2015-08-18T00:12:00Z 7.887
  9. [...]
  10. 2015-09-18T16:12:00Z 3.402
  11. 2015-09-18T16:18:00Z 3.314
  12. 2015-09-18T16:24:00Z 3.235

该查询从measurement h2o_feet的一个序列中返回所有water_level数据点。

限制返回的序列个数并且包含GROUP BY time()子句

  1. > 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 1
  2. name: h2o_feet
  3. tags: location=coyote_creek
  4. time mean
  5. ---- ----
  6. 2015-08-18T00:00:00Z 8.0625
  7. 2015-08-18T00:12:00Z 7.8245
  8. 2015-08-18T00:24:00Z 7.5675
  9. 2015-08-18T00:36:00Z 7.303

该查询使用了一个InfluxQL函数和GROUP BY子句中的时间间隔,计算查询时间范围内每12分钟的water_level的平均值。SLIMIT 1表示该查询请求的是measurement h2o_feet中的一个序列。

请注意,如果以上查询语句中没有使用SLIMIT 1,那么查询将返回measurement h2o_feet中的两个序列:location=coyote_creeklocation=santa_monica

LIMIT和SLIMIT

SLIMIT <N>放在LIMIT <N>的后面,则返回指定measurement的N个序列中的前N个数据点。

语法

  1. 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中的所有序列。

请注意,LIMITSLIMIT子句必须按照上述语法中的顺序使用。

示例

限制返回的数据点个数和序列个数

  1. > SELECT "water_level" FROM "h2o_feet" GROUP BY * LIMIT 3 SLIMIT 1
  2. name: h2o_feet
  3. tags: location=coyote_creek
  4. time water_level
  5. ---- -----------
  6. 2015-08-18T00:00:00Z 8.12
  7. 2015-08-18T00:06:00Z 8.005
  8. 2015-08-18T00:12:00Z 7.887

该查询从measurement h2o_feet的一个序列中返回三个最早的数据点。

限制返回的数据点个数和序列个数,并且包含GROUP BY time()子句

  1. > 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 1
  2. name: h2o_feet
  3. tags: location=coyote_creek
  4. time mean
  5. ---- ----
  6. 2015-08-18T00:00:00Z 8.0625
  7. 2015-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®.