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.
InfluxDB v1 to InfluxDB 3 data model
InfluxQL was designed around the InfluxDB v1 data model, but can still be used to query data from InfluxDB 3 Enterprise. When using the InfluxDB 3 Enterprise InfluxQL implementation, the data model is different in the following ways:
- an InfluxDB v1 database and retention policy combination is combined into a single InfluxDB 3 database entity.
- an InfluxDB v1 measurement is equivalent to an InfluxDB 3 table.
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.
Result set
If at least one row satisfies the query, InfluxDB 3 Enterprise 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
SELECTclause - A
timecolumn that contains the timestamp for the record or the group - An
iox::measurementcolumn that contains the record’s table name - Columns listed in the query’s
GROUP BYclause; 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
- Query data within time boundaries
- Query data without time boundaries
- Query specific fields and tags
- Query fields based on tag values
- Query points based on field values
- Alias queried fields and tags
Sample data
The following examples use the Home sensor data. To run the example queries and return results, write the sample data to your InfluxDB 3 Enterprise database before running the example queries.
Query data within time boundaries
- Use the
SELECTclause 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
FROMclause. - Specify time boundaries in the
WHEREclause. Include time-based predicates that compare the value of thetimecolumn to a timestamp. Use theANDlogical operator to chain multiple predicates together.
Query time boundaries can be relative or absolute.
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 homeQuery 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 homeQuery fields based on tag values
- In the
SELECTclause, include fields you want to query and tags you want to base conditions on. - In the
WHEREclause, 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
SELECTclause, include fields you want to query. - In the
WHEREclause, 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 <= -10Alias 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 homeWhen 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!
Support and feedback
Thank you for being part of our community! We welcome and encourage your feedback and bug reports for InfluxDB 3 Enterprise and this documentation. To find support, use the following resources:
Customers with an annual or support contract can contact InfluxData Support. Customers using a trial license can email trial@influxdata.com for assistance.