MySQL Aggregation and Window Functions Cheatsheet/Filter grouped results with HAVING

Keep only groups that meet aggregate criteria.

Section: aggregation and grouping

Filter grouped results with HAVING

sql
sql
SELECT user_id, COUNT(*) AS order_count
FROM orders
GROUP BY user_id
HAVING COUNT(*) >= 5;
Explanation

`HAVING` filters after aggregation, unlike `WHERE`.

Learn the surrounding workflow

Compare similar commands or jump into common fixes when this command is part of a bigger troubleshooting path.

Related commands

Same sheet · prioritizing aggregation and grouping
Group rows and count them
Count orders by status.
OpenIn sheetsqlsame section
Count all rows
Return the total number of rows in a table.
OpenIn sheetsqlsame section
Use SUM and AVG
Calculate totals and averages.
OpenIn sheetsqlsame section
Assign row numbers within each user
Rank a user's orders by recency.
Calculate a running total
Compute cumulative revenue by day.
Compare to the previous row with LAG
Calculate day-over-day change.