Documentation

Perform a basic InfluxQL query

InfluxQL (Influx Query Language) is an SQL-like query language used to interact with InfluxDB and work with times series data.

A basic InfluxQL query that queries data from InfluxDB most commonly includes the following clauses:

* Required
  • * SELECT: Specify fields, tags, and calculations to return from a table or use the wildcard alias (*) to select all fields and tags from a table. It requires at least one field key or the wildcard alias (*). For more information, see Notable SELECT statement behaviors.
  • * FROM: Specify the table to query from. It requires one or more comma-delimited measurement expressions.
  • WHERE: Filter data based on field values, tag values, or timestamps. Only return data that meets the specified conditions–for example, falls within a time range, contains specific tag values, or contains a field value outside a specified range.
SELECT
  temp,
  hum,
  room
FROM home
WHERE
  time >= '2022-01-01T08:00:00Z'
  AND time <= '2022-01-01T20:00:00Z'

Result set

If at least one row satisfies the query, InfluxDB Clustered returns row data in the query result set. If a query uses a GROUP BY clause, the result set includes the following:

  • Columns listed in the query’s SELECT clause
  • A time column that contains the timestamp for the record or the group
  • An iox::measurement column that contains the record’s table name
  • Columns listed in the query’s GROUP BY clause; each row in the result set contains the values used for grouping

GROUP BY result columns

If a query uses GROUP BY and the WHERE clause doesn’t filter by time, then groups are based on the default time range.

Basic query examples

Sample data

The following examples use the Get started home sensor data. To run the example queries and return results, write the sample data to your InfluxDB Clustered database before running the example queries.

Query data within time boundaries

  • Use the SELECT clause to specify what tags and fields to return. Specify at least one field key. To return all tags and fields, use the wildcard alias (*).
  • Specify the table to query in the FROM clause.
  • Specify time boundaries in the WHERE clause. Include time-based predicates that compare the value of the time column to a timestamp. Use the AND logical operator to chain multiple predicates together.
SELECT *
FROM home
WHERE
  time >= '2022-01-01T08:00:00Z'
  AND time <= '2022-01-01T12:00:00Z'

Query time boundaries can be relative or absolute.

Query with relative time boundaries

Query with absolute time boundaries

Query data without time boundaries

To query data without time boundaries, do not include any time-based predicates in your WHERE clause. If a time range is not defined in the WHERE clause, the default time range is the Unix epoch (1970-01-01T00:00:00Z) to now.

Querying data without time bounds can return an unexpected amount of data. The query may take a long time to complete and results may be truncated.

SELECT * FROM home

Query specific fields and tags

To query specific fields, include them in the SELECT clause. If querying multiple fields or tags, comma-delimit each. If a field or tag key includes special characters or spaces or is case-sensitive, wrap the key in double-quotes.

SELECT time, room, temp, hum FROM home

Query fields based on tag values

  • In the SELECT clause, include fields you want to query and tags you want to base conditions on.
  • In the WHERE clause, include predicates that compare the tag identifier to a string literal. Use logical operators to chain multiple predicates together and apply multiple conditions.
SELECT * FROM home WHERE room = 'Kitchen'

Query points based on field values

  • In the SELECT clause, include fields you want to query.
  • In the WHERE clause, include predicates that compare the field identifier to a value or expression. Use logical operators (AND, OR) to chain multiple predicates together and apply multiple conditions.
SELECT co, time FROM home WHERE co >= 10 OR co <= -10

Alias queried fields and tags

To alias or rename fields and tags that you query, use the AS clause. After the tag, field, or expression you want to alias, pass AS followed by the alias name as an identifier (wrap in double quotes (") if the alias includes spaces or special characters)–for example:

SELECT temp AS temperature, hum AS "humidity (%)" FROM home

When aliasing columns in InfluxQL, use the AS clause and an identifier. When aliasing columns in SQL, you can use the AS clause to define the alias, but it isn’t necessary.


Was this page helpful?

Thank you for your feedback!


The future of Flux

Flux is going into maintenance mode. You can continue using it as you currently are without any changes to your code.

Read more

InfluxDB v3 enhancements and InfluxDB Clustered is now generally available

New capabilities, including faster query performance and management tooling advance the InfluxDB v3 product line. InfluxDB Clustered is now generally available.

InfluxDB v3 performance and features

The InfluxDB v3 product line has seen significant enhancements in query performance and has made new management tooling available. These enhancements include an operational dashboard to monitor the health of your InfluxDB cluster, single sign-on (SSO) support in InfluxDB Cloud Dedicated, and new management APIs for tokens and databases.

Learn about the new v3 enhancements


InfluxDB Clustered general availability

InfluxDB Clustered is now generally available and gives you the power of InfluxDB v3 in your self-managed stack.

Talk to us about InfluxDB Clustered