https://leetcode.com/problems/primary-department-for-each-employee/description/
Column Name | Type |
employee_id | int |
department_id | int |
primary_flag | varchar |
Employee 테이블:
- employee_id는 직원의 ID입니다.
- department_id는 직원이 속한 부서의 ID입니다.
- primary_flag는 ENUM 타입으로 ('Y', 'N') 값을 가질 수 있습니다. 'Y'는 해당 부서가 직원의 주 부서임을 나타내고, 'N'은 해당 부서가 주 부서가 아님을 나타냅니다.
모든 직원과 그들의 주 부서를 보고하는 솔루션을 작성하세요. 직원이 하나의 부서에만 속해 있는 경우, 그들의 유일한 부서를 보고하세요.
select
employee_id,
department_id
from Employee
group by employee_id
having count(department_id) = 1
먼저 소속된 부서가 한개밖에 없는 직원들을 필터링한다.
-- select
-- employee_id,
-- department_id
-- from Employee
-- group by employee_id
-- having count(department_id) = 1
select employee_id,
department_id
from Employee
where primary_flag = 'Y'
윗부분을 잠시 주석처리 한 후, 주요 부서가 있는 직원들을 필터링한다.
select
employee_id,
department_id
from Employee
group by employee_id
having count(department_id) = 1
union
select employee_id,
department_id
from Employee
where primary_flag = 'Y'
두 쿼리를 결합하여 최종 결과를 나타낸다.
처음에는 두가지 조건을 각각 어떤 식으로 적용하면 좋을지 고민이 있었는데 오랜만에 union을 사용해 볼 수 있는 좋은 기회가 되었다.
'코딩일기' 카테고리의 다른 글
알고리즘 코드카타 108 - 삼각 달팽이 (1) | 2024.07.05 |
---|---|
알고리즘 코트카타 - 16 ~ 20 (자바스크립트) (0) | 2024.07.04 |
알고리즘 코드카타 107 - 큰 수 만들기 (0) | 2024.07.04 |
알고리즘 코트카타 - 11 ~ 15 (자바스크립트) (1) | 2024.07.03 |
SQL 코드카타 106 - The Number of Employees Which Report to Each Employee (0) | 2024.07.03 |