SQL QuestSQL Interview Questions › Aggregation & Grouping

Active Spender Cohort (HAVING)

MediumFreeQuerying BasicsAggregation & Grouping

Retention wants the customer cohort that placed at least 3 orders along with each one's total spend — the high-engagement segment worth a loyalty offer.

Group orders by customer_id. Show customer_id, order_count and total_spent (SUM of total). Filter with **HAVING COUNT(*) >= 3**. Order by total_spent descending.

WHERE filters rows before grouping, HAVING filters groups after aggregation. You can't put COUNT(*) >= 3 in WHERE because the aggregate doesn't exist until after GROUP BY — that's the rule HAVING was added to handle.

Solve it in the browser editor →

Runs on SQLite in your browser, graded against the expected result, no signup. A wrong answer gets a diagnosis, not just "incorrect".

Schema

orders

order_idcustomer_idproductcategoryquantitypricetotalorder_datecountrystatus
11Laptop ProElectronics11299.991299.992024-01-15USAcompleted
22Wireless MouseElectronics249.9999.982024-01-16Canadacompleted
33Office ChairFurniture1349.99349.992024-01-17USAcompleted

Expected output: Only Cust 1 appears

Hint

The hint for this one spells out most of the query, so it stays in the editor. Reach for SELECT, GROUP BY, HAVING, and open the hint there if you stall.

Concepts

SELECT GROUP BY HAVING Aggregation

Practise the topic: SQL practice questions · GROUP BY exercises

In these company practice sets

Ramp · Revolut · Walmart · Microsoft

A SQL Quest challenge matched to patterns reported for these companies — not a question any of them has published.

Related questions

Class Survival BreakdownMedium · FreeDepartment Roster with GROUP_CONCATMedium · FreeMovie Rating Tier BreakdownMedium · FreeFull Survival Dashboard by ClassMedium · FreeGenre Financial ReportMedium · FreeDepartment Compensation ReportMedium · Free

Where would this cost you points in an interview?

Ten questions, no signup: a Skillmap across nine SQL skills and the one to fix first.

Take the readiness test