SQL 50, decoded
0 of 50 solved/50

1789. Primary Department for Each Employee

SQL 50 · Advanced Select and Joins (day 5). Decode it with the hints, solve it on LeetCode, then compare with the reference solution in MySQLPostgreSQL.

EasySolve it on LeetCode ↗

Your work

Hints

Open one at a time. Try to finish with as few as you can.

1. What does one output row represent?
One employee.
2. Approach
Rows with primary_flag = 'Y', plus employees with only one department (GROUP BY HAVING COUNT(*) = 1).
3. The trap
Employees with a single department have flag N but still count.

Reference solution

Tested on MySQL 8.0 and PostgreSQL 16. Switch dialect at the top of the page.

Show the MySQLPostgreSQL solution
SELECT employee_id, department_id
FROM Employee
WHERE primary_flag = 'Y'
   OR employee_id IN (
     SELECT employee_id
     FROM Employee
     GROUP BY employee_id
     HAVING COUNT(*) = 1
   );

Patterns used

Toolbox