SQL QuestSQL Interview Questions › Aggregation & Grouping

Customers with Orders in ALL Categories

HardProQuerying BasicsAggregation & GroupingSubqueries & CTEs

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_idcustomer_idproductcategoryquantitypricetotalorder_datecountrystatus
11Laptop ProElectronics11299.991299.992024-01-15USAcompleted
22Wireless MouseElectronics249.9999.982024-01-16Canadacompleted
33Office ChairFurniture1349.99349.992024-01-17USAcompleted

Expected output: customer_id: 5, categories_ordered: 3

Hint

This is a Pro challenge — the hint, the step-by-step tutor and the reference solution open in the app.

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

Cumulative Distinct Customers Over TimeHard · FreeRunning Total RevenueHard · FreeYear-over-Year GrowthHard · Free7-Day Rolling Revenue AverageHard · FreeMulti-CTE Revenue PipelineHard · FreeOrder Sessionization by CustomerHard · Pro

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