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
WHEREclause filters rows based on specified conditions before the aggregate operation. TheHAVINGclause 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 >}} |