1.9 KiB
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. TheHAVING
clause filters rows based on specified conditions after the aggregate operation has taken place.
Syntax
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
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.
location | mean_water_level |
---|---|
coyote_creek | 5.359142420303919 |
{{% /expand %}} | |
{{< /expand-wrapper >}} |
Return the average result greater than a specified number from a specific time range
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.
time | avg_water_level |
---|---|
2019-09-01T22:06:00Z | 6.8225 |
2019-09-01T22:12:00Z | 6.8405000000000005 |
2019-09-01T22:30:00Z | 6.8505 |
2019-09-01T22:36:00Z | 6.8325 |
{{% /expand %}} | |
{{< /expand-wrapper >}} |