1789. Primary Department for Each Employee
LeetCode - The World's Leading Online Programming Learning Platform
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
[풀이1]
- 처음 풀었던 풀이; Window 함수 이용해서 풀이함
-- 1. 출력: employee_id, department_id
-- 2. 필터: 직원별 primary department, 한 부서 소속은 그 department 출력
-- 3. 정렬: X
SELECT employee_id
,department_id
FROM employee
WHERE primary_flag = 'Y'
OR employee_id IN (SELECT IF(COUNT(employee_id) OVER (PARTITION BY employee_id) = 1,employee_id,null)
FROM employee)
[풀이2]
- 1번 풀이랑 거의 비슷함; WHERE절 서브 쿼리에 GROUP BY 사용함
-- 1. 출력: employee_id, department_id
-- 2. 필터: 직원별 primary department, 한 부서 소속은 그 department 출력
-- 3. 정렬: X
SELECT employee_id
,department_id
FROM employee
WHERE primary_flag = 'Y'
OR employee_id IN (SELECT employee_id
FROM employee
GROUP BY 1
HAVING COUNT(employee_id)=1)
[풀이3]
-처음에 생각했었던 풀이; UNION 사용
-- 1. 출력: employee_id, department_id
-- 2. 필터: 직원별 primary department, 한 부서 소속은 그 department 출력
-- 3. 정렬: X
SELECT employee_id
,department_id
FROM employee
WHERE primary_flag = 'Y'
UNION
SELECT employee_id
,department_id
FROM employee
GROUP BY 1
HAVING COUNT(employee_id) = 1
multiple department 직원과 only one department 직원을 구분해서 출력해야하는 문제.
처음 생각했던 풀이가 바로 안만들어서 생각보다 풀이에 오래 걸렸다.
머리 속에 그려지는 쿼리를 바로바로 작성할 수 있게 꾸준히 연습 또 연습!!
'SQL > LeetCode' 카테고리의 다른 글
| [SQL] LeetCode: 610. Triangle Judgement (0) | 2024.02.08 |
|---|---|
| [SQL] LeetCode : 184. Department Highest Salary (0) | 2024.01.31 |
| [SQL] LeetCode: 1731. The Number of Employees Which Report to Each Employee (0) | 2024.01.17 |
| [SQL] LeetCode: 177. Nth Highest Salary (0) | 2023.06.28 |
| [SQL] LeetCode: 185. Department Top Three Salaries (0) | 2023.06.24 |