SQL QuestSQL Interview Questions › Joins

Employee + Manager Pairs (Self Join)

MediumFreeQuerying BasicsJoins

HR wants a flat report pairing each employee with their manager's name. The employees table is its own reference — manager_id points to a row in the same table. The cleanest way to express this is a self join with two aliases.

Show emp_name, department, manager_name. Include only employees who have a manager (manager_id IS NOT NULL). Order by department, then emp_name.

The alias trick: FROM employees e JOIN employees m ON e.manager_id = m.emp_id treats the table as two logical copies — e for the employee row, m for the matching manager row.

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_idnamedepartmentpositionsalaryhire_datemanager_idperformance_rating
1Alice JohnsonEngineeringSenior Developer950002019-03-1554.5
2Bob SmithEngineeringDeveloper750002020-06-0113.8
3Carol WilliamsMarketingMarketing Manager850002018-09-20NULL4.2

Expected output: Alice | Engineering | Bob

Hint

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

Concepts

SELECT JOIN Self Join Aliases

Practise the topic: SQL practice questions · JOIN practice

In these company practice sets

Plaid

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

Related questions

Customers Who Never OrderedMedium · FreeAbove-Average Departments (Derived Table)Medium · FreeLEFT JOIN NULL Semantics: Inactive CustomersMedium · FreeManagement Hierarchy OverviewMedium · FreeCount Direct ReportsMedium · FreeCustomer Recency AnalysisMedium · 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