[SQL 코드카타]
1789. Primary Department for Each Employee
https://leetcode.com/problems/primary-department-for-each-employee/description/
1) 어떤 문제가 있었나
- 소속 부서가 여러 개일 경우 주요 부서 구분값이 Y, 소속 부서가 하나일 경우 구분 값이 N인 직원의 ID와 부서 ID 추출
- WHERE과 HAVING을 잘 이용해서 하나의 쿼리로 해보려 했지만 실패
2) 내가 시도해본 건 무엇인가
- UNION 함수를 통해 2개 열 값을 동일 하게 맞춰서 조건을 다르게 적용. 하나는 WHERE로, 하나는 HAVING으로
select employee_id, department_id
from Employee
where primary_flag = 'Y'
GROUP BY employee_id
union
select employee_id, department_id
from Employee
GROUP BY employee_id
HAVING COUNT(department_id) = 1
3) 어떻게 해결했나
- 다른 사람 풀이를 보니, HAVING 절 내용을 WHERE절 서브쿼리로 활용함
#다른 사람 풀이
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
)
GROUP BY employee_id
4) 무엇을 새롭게 알았나
- WHERE 절에서 서브쿼리 등을 통해 다양하게 응용할 수 있는데, 제대로 활용을 못하고 있음
- HAVING 절에서 연산은 가능하나, 'primary_flag = 'Y'와 같은 다른 칼럼값을 활용한 조건은 적용 안됨
[회고]
- 팀원분께 파이썬 기초를 공부할 만한 자료를 공유 받았는데, 틈틈히 공부하며 연습문제 풀면 좋을 듯
└ 한 권으로 끝내는 <파이썬 노트> https://wikidocs.net/book/6708
└ 한 권으로 끝내는 <판다스 노트> https://wikidocs.net/book/4639
'TIL' 카테고리의 다른 글
[240122] SQL: 코드카타 110 & 파이썬: 코드카타 21 (0) | 2024.01.22 |
---|---|
[240119] SQL: 코드카타 108~109 & 파이썬: 코드카타 19~20 (0) | 2024.01.19 |
[240117] 기초 프로젝트: 피드백 내용 정리 및 최종 아젠다 (0) | 2024.01.17 |
[240116] 기초 프로젝트: SQL을 활용한 코호트 분석 (0) | 2024.01.16 |
[240115] 기초 프로젝트: SQL을 활용한 고객 세그먼트 분류 (0) | 2024.01.15 |