문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음
Table: Employee
| Column Name | Type |
|---|---|
| employee_id | int |
| department_id | int |
| primary_flag | varchar |
(employee_id, department_id)는 이 테이블의 기본 키이다.
employee_id는 직원의 id이다.
department_id는 해당 지원이 소속된 부서의 id이다.
primary_flag는 ('Y', 'N') 유형의 ENUM이다. 플래그가 'Y'이면, 해당 부서는 직원의 주 부서이고, 플래그가 'N'이면, 주 부서가 아니다.
직원은 여러 부서에 소속될 수 있다. 직원이 다른 부서에 추가될 때, 해당 직원은 어떤 부서를 주 부서로 할지 결정한다. 직원이 오직 하나의 부서에 있을 경우 주 부서 여부를 나타내는 컬럼은 N이다.
모든 직원과 그들의 주 부서를 보고하는 방법을 작성해라. 한 부서에만 속한 직원의 경우, 해당 부서만 보고하면 된다.
Input:
Employee table:
| employee_id | department_id | primary_flag |
|---|---|---|
| 1 | 1 | N |
| 2 | 1 | Y |
| 2 | 2 | N |
| 3 | 3 | N |
| 4 | 2 | N |
| 4 | 3 | Y |
| 4 | 4 | N |
Output:
| employee_id | department_id |
|---|---|
| 1 | 1 |
| 2 | 1 |
| 3 | 3 |
| 4 | 3 |
Explanation:
-- Write your PostgreSQL query statement below
select employee_id, department_id
from Employee
where employee_id in (
select employee_id
from Employee
group by employee_id
having count(*) = 1
)
or primary_flag = 'Y'