Managers with at Least 5 Direct Reports

medium database sql

Problem

From Employee(id, name, managerId), return names of managers with ≥ 5 direct reports.

Inputrows = [(101,'A',Null),(102,'B',101),(103,'C',101),(104,'D',101),(105,'E',101),(106,'F',101),(107,'G',101)]
Output['A']
One pass over rows tallying managerId; filter ≥ 5; lookup name by id.

SELECT name FROM Employee
WHERE id IN (SELECT managerId FROM Employee GROUP BY managerId HAVING COUNT(*) >= 5);
Time: O(n) Space: O(n)