AdvancedJOINs (INNER, LEFT, RIGHT, FULL)

Find employees who share same department AND manager

The query

SQL
SELECT
  e1.first_name || ' ' || e1.last_name AS emp1,
  e2.first_name || ' ' || e2.last_name AS emp2,
  d.dept_name,
  m.first_name || ' ' || m.last_name AS shared_manager
FROM employees e1
JOIN employees e2 ON e1.dept_id = e2.dept_id
  AND e1.manager_id = e2.manager_id
  AND e1.emp_id < e2.emp_id -- avoid duplicates
JOIN departments d ON e1.dept_id = d.dept_id
JOIN employees m ON e1.manager_id = m.emp_id
ORDER BY d.dept_name;
Tested against PostgreSQL 16

Note

Self-join with additional conditions. emp_id < avoids (A,B) and (B,A) duplicates.

Tables referenced