SQL Quest › SQL Interview Questions › Subqueries & CTEs
Give a Query a Name (WITH)
Recruiting wants the senior engineers — everyone in Engineering earning more than 90,000.
Use a WITH clause to define engineers as the Engineering rows, then select from it. Show name, salary, hire_date. Order by salary descending, then name.
The new idea, and it is smaller than its reputation: WITH name AS (...) gives a query a name so you can select FROM it like a table. That's all a CTE is. It doesn't aggregate, doesn't loop, doesn't do anything clever by itself.
You could write this as one WHERE department = 'Engineering' AND salary > 90000 and you'd be right. The point isn't that the CTE is needed here — it's that you see the shape while it's still trivial, because by the time you're stacking three of them to build a revenue pipeline, the syntax needs to already feel boring.
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
employees
| emp_id | name | department | position | salary | hire_date | manager_id | performance_rating |
|---|---|---|---|---|---|---|---|
| 1 | Alice Johnson | Engineering | Senior Developer | 95000 | 2019-03-15 | 5 | 4.5 |
| 2 | Bob Smith | Engineering | Developer | 75000 | 2020-06-01 | 1 | 3.8 |
| 3 | Carol Williams | Marketing | Marketing Manager | 85000 | 2018-09-20 | NULL | 4.2 |
Expected output: 7 rows — the Engineering staff above 90,000
Hint
SELECT, CTE, WHERE, and open the hint there if you stall.Concepts
SELECT CTE WHERE
Practise the topic: SQL practice questions · CTE practice
In these company practice sets
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