Back to Influxdb

Having

content/shared/sql-reference/having.md

latest1.9 KB
Original Source

The HAVING clause places conditions on results created by an aggregate operation on groups. The HAVING clause must follow the GROUP BY clause and precede the ORDER BY clause.

[!Note] The WHERE clause filters rows based on specified conditions before the aggregate operation. The HAVING clause filters rows based on specified conditions after the aggregate operation has taken place.

Syntax

sql
SELECT_clause FROM_clause [WHERE_clause] [GROUP_BY_clause] [HAVING_clause] [ORDER_BY_clause] 

Examples

Return rows with an aggregate value greater than a specified number

sql
SELECT
  MEAN("water_level") AS "mean_water_level", "location"
FROM
  "h2o_feet" 
GROUP BY
  "location"
HAVING
  "mean_water_level" > 5

{{< expand-wrapper >}} {{% expand "View example results" %}} The query returns on rows with values in the mean_water_level greater than 5 after the aggregate operation.

locationmean_water_level
coyote_creek5.359142420303919
{{% /expand %}}
{{< /expand-wrapper >}}

Return the average result greater than a specified number from a specific time range

sql
SELECT 
  AVG("water_level") AS "avg_water_level", 
  "time" 
FROM 
  "h2o_feet" 
WHERE 
  time >= '2019-09-01T00:00:00Z' AND time <= '2019-09-02T00:00:00Z' 
GROUP BY 
  "time" 
HAVING 
  "avg_water_level" > 6.82 
ORDER BY 
  "time"

{{< expand-wrapper >}} {{% expand "View example results" %}}

The query calculates the average water level per time and only returns rows with an average greater than 6.82 during the specified time range.

timeavg_water_level
2019-09-01T22:06:00Z6.8225
2019-09-01T22:12:00Z6.8405000000000005
2019-09-01T22:30:00Z6.8505
2019-09-01T22:36:00Z6.8325
{{% /expand %}}
{{< /expand-wrapper >}}