문제
- LeetCode SQL 문제
1789. Primary Department for Each Employee / Easy
- 문제 내용 : [링크]
내가 작성한 Query
(select employee_id, department_id from employee where primary_flag = 'Y') union (select employee_id, department_id from employee group by employee_id having count(*) = 1 order by 1)
부서 소속이 1개인 사원들의 데이터와, 부서 소속이 2개 이상인 데이터를 분리해서 구한 후, UNION
하는 방식으로 접근
부서 소속이 2개 이상인 경우, primary_flag
값이 'Y' 일 때 primary department 이므로, WHERE
조건을 통해 primary_flag= = 'Y'
인 데이터를 필터링하여 출력한다.
부서 소속이 1개인 경우, employee_id
로 GROUP BY
하여 데이터 개수가 1개인 조건을 HAVING
절에 반영하여 필터링한다.
위의 두 데이터를 UNION
해 준다. 중복이 있으면 안되므로, UNION ALL
이 아닌, UNION
을 해 준다.
🌟 한 테이블 내에서 집계의 방식이 다른 경우, 각각의 방식으로 집계를 한 후 UNION
해주는 방법이 있다.