SQL Quest › SQL Interview Questions › Aggregation & Grouping
Customers with Orders in ALL Categories
Find customers who have placed at least one order in every product category that exists in the orders table. Show customer_id and categories_ordered (count of distinct categories). Sort by customer_id. This is relational division, one of the hardest SQL patterns. It's asked at Google and Amazon because it tests whether you can express 'for all' logic in SQL, which has no direct FOR ALL keyword.
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_id | customer_id | product | category | quantity | price | total | order_date | country | status |
|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | Laptop Pro | Electronics | 1 | 1299.99 | 1299.99 | 2024-01-15 | USA | completed |
| 2 | 2 | Wireless Mouse | Electronics | 2 | 49.99 | 99.98 | 2024-01-16 | Canada | completed |
| 3 | 3 | Office Chair | Furniture | 1 | 349.99 | 349.99 | 2024-01-17 | USA | completed |
Expected output: customer_id: 5, categories_ordered: 3
Hint
Concepts
SELECT GROUP BY HAVING COUNT DISTINCT Subquery Relational Division
Practise the topic: SQL practice questions · GROUP BY exercises · CTE practice · Advanced SQL interview questions
In these company practice sets
Amazon · Google · Meta · Plaid · Snowflake · LinkedIn · Microsoft
A SQL Quest challenge matched to patterns reported for these companies — not a question any of them has published.
Related questions
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