📝 1965. Employees With Missing Information
🔹 정보가 누락된 직원
정보가 누락된 모든 직원의 ID를 보고하는 솔루션을 작성하세요. 다음과 같은 경우 직원 정보가 누락됩니다.
- 직원의 이름이 누락되었거나
- 직원의 급여가 누락되었습니다.
Employee_id를 기준으로 오름차순으로 정렬된 결과 테이블을 반환합니다.
📝 문제 설명
Employees With Missing Information(1965번) 문제는 Employees 테이블과 Salaries 테이블을 결합하여 직원 정보가 누락된 ID를 찾는 문제입니다.
직원의 이름이 없는 경우나 급여 정보가 없는 경우, 해당 직원의 ID를 반환해야 합니다.
결과는 Employee_id 기준으로 오름차순 정렬하여 반환합니다.
📊 테이블 구조
Employees 테이블
Column Name | Type |
employee_id | int |
name | varchar |
Salaries 테이블
Column Name | Type |
employee_id | int |
salary | int |
💡 SQL 문제 해결 방법
- LEFT JOIN을 사용하여 Employees와 Salaries 테이블 결합
- LEFT JOIN을 사용하여 두 테이블을 결합하되, 정보가 없는 경우 NULL 값을 반환하도록 합니다.
- 이름 또는 급여가 누락된 경우 찾기
- WHERE절을 사용하여 name이 NULL이거나 salary가 NULL인 경우를 필터링합니다.
- UNION을 사용하여 두 개의 쿼리 결합
- 첫 번째 쿼리는 Employees 테이블에서 Salaries와 LEFT JOIN 한 결과 중 급여가 없는 직원들을 찾고,
- 두 번째 쿼리는 Salaries 테이블에서 Employees와 LEFT JOIN한 결과 중 이름이 없는 직원들을 찾습니다.
- 결과를 오름차순 정렬
- ORDER BY employee_id를 사용하여 결과를 직원 ID 기준으로 오름차순으로 정렬합니다.
반응형
🖥️ SQL 풀이
SELECT a.employee_id
FROM Employees a
LEFT JOIN Salaries b
ON a.employee_id = b.employee_id
WHERE b.employee_id IS NULL
UNION
SELECT a.employee_id
FROM Salaries a
LEFT JOIN Employees b
ON a.employee_id = b.employee_id
WHERE b.employee_id IS NULL
ORDER BY 1
🔍 쿼리 분석
- LEFT JOIN: 두 테이블을 결합하되, 하나의 테이블에만 데이터가 있는 경우 NULL을 반환합니다. 이를 통해 이름이나 급여가 누락된 직원들을 찾을 수 있습니다.
- WHERE b.employee_id IS NULL: 첫 번째 쿼리는 Salaries 테이블에 급여 정보가 없는 직원들을, 두 번째 쿼리는 Employees 테이블에 이름이 없는 직원들을 찾습니다.
- UNION: 두 개의 쿼리 결과를 합쳐 중복 없이 하나의 리스트로 반환합니다.
- ORDER BY 1: employee_id를 기준으로 오름차순 정렬합니다.
📌 실행 예제
📊 입력 데이터
Employees 테이블
employee_id | name |
2 | Crew |
4 | Haven |
5 | Kristian |
Salaries 테이블
employee_id | salary |
5 | 76071 |
1 | 22517 |
4 | 63539 |
쿼리 실행 결과
employee_id |
1 |
2 |
- 사원 1은 Employees 테이블에는 존재하지 않지만 Salaries 테이블에는 존재한다.
- 사원 2는 Employees 테이블에는 존재하지만 Salaries 테이블에는 존재하지 않는다.
🎯 결론
이 문제는 LEFT JOIN과 UNION을 사용하여, 두 테이블에서 누락된 정보를 찾는 방법을 연습할 수 있습니다.
두 테이블에서 누락된 데이터를 찾아, employee_id를 기준으로 오름차순으로 결과를 정렬하는 것이 핵심입니다.
더 많은 SQL 문제 풀이를 보고 싶다면 LeetCode SQL 문제 모음을 확인해 보세요! 🚀
728x90
반응형
'LeetCode' 카테고리의 다른 글
[LeetCode] 178. Rank Scores (0) | 2025.03.20 |
---|---|
[LeetCode] 177. Nth Highest Salary (0) | 2025.03.20 |
[LeetCode] 1890. The Latest Login in 2020 (2) | 2025.03.18 |
[LeetCode] 1873. Calculate Special Bonus (0) | 2025.03.17 |
[LeetCode] 1795. Rearrange Products Table (0) | 2025.03.12 |