Explorer
SQL

Find each employee and their manager name using a self join on the `employees` table.

Problem Statement

<p>Find each employee and their manager name using a self join on the <code>employees</code> table.</p>

Examples

Input: employees table: +----+---------+------------+ | id | name | manager_id | +----+---------+------------+ | 1 | Boss | NULL | | 2 | Alice | 1 | | 3 | Bob | 1 | | 4 | Charlie | 2 | +----+---------+------------+

Output: +----------+---------+ | employee | manager | +----------+---------+ | Boss | null | | Alice | Boss | | Bob | Boss | | Charlie | Alice | +----------+---------+

Explanation: The query joins the matching records on the related keys and projects the requested fields.

Complexity

Time Complexity: -

Space Complexity: -

Hints

šŸ’” Hint 1: Determine which tables contain the required columns and relate them using LEFT JOIN on the corresponding foreign/primary keys. šŸ’” Hint 2: Write out the ON condition matching key fields (e.g. ON a.key = b.key) and apply any filtering in the WHERE clause. šŸ’” Hint 3: Select only the requested columns in the SELECT clause with clear aliases if needed: SELECT ... FROM ... LEFT JOIN ... ON ...;

Editorial & Approach

Problem Overview & Intuition

To solve "Self Join", we query the relational database engine using declarative SQL. The goal is to find each employee and their manager name using a self join on the `employees` table. By formulating an optimal execution plan with appropriate projection and filtering, the database engine executes the query with minimal overhead.

Step-by-Step Approach

  1. Analyze Schema: Identify the target tables, necessary foreign keys, and expected output columns.
  2. Construct Filtering & Logic: Apply table joins to isolate the requested data.
  3. Format & Order: Ensure columns match the expected project schema in order.

Optimal Implementation (SQL)

SELECT e.name AS employee, m.name AS manager FROM employees e LEFT JOIN employees m ON e.manager_id = m.id;

Complexity Analysis

Time Complexity O(N * M) worst-case, O(N + M) with hash/merge join on indexed keys.
Space Complexity O(N) for join buffer and result set.

Key Considerations & Edge Cases

  • Empty Tables: The query executes safely returning zero rows without syntax error.
  • NULL Values: Columns containing NULL values are properly handled by standard ANSI SQL semantics.
  • Case Sensitivity: String comparisons and keywords adhere to PostgreSQL/standard SQL rules.

Self Join

Medium

Find each employee and their manager name using a self join on the employees table.

Example Scenarios
1Example 1
Input:
employees table
idnamemanager_id
1BossNULL
2Alice1
3Bob1
4Charlie2
Output:
employeemanager
Bossnull
AliceBoss
BobBoss
CharlieAlice
Explanation:

The query joins the matching records on the related keys and projects the requested fields.

SQL Editor
Loading Editor...
Query Results

Run a query to see results here.