📝 577. Employee Bonus
🔹직원 보너스
보너스가 1000 미만인 각 직원의 이름과 보너스 금액을 보고하는 솔루션을 작성하세요.
어떤 순서로든 결과 테이블을 반환합니다.
📝 문제 설명
회사에서 지급하는 보너스 정보를 분석하는 문제입니다. 보너스가 1000 미만이거나 보너스를 받지 못한 직원의 이름과 보너스 금액을 조회해야 합니다.
어떤 순서로든 결과 테이블을 반환하면 됩니다.
📊 테이블 구조
Emplyee 테이블
Column Name | Type |
empId | int |
name | varchar |
supervisor | int |
salary | int |
Bonus 테이블
Column Name | Type |
empId | int |
bonus | int |
💡 SQL 문제 해결 방법
이 문제는 LEFT JOIN과 WHERE 조건을 활용하여 해결할 수 있습니다. Employee 테이블을 기준으로 Bonus 테이블을 LEFT JOIN 한 후, 보너스가 1000 미만이거나 보너스를 받지 못한 직원을 필터링하면 됩니다.
728x90
🖥️ SQL 풀이
SELECT a.name
, b.bonus
FROM Employee a
LEFT JOIN Bonus b
ON a.empId = b.empId
WHERE b.bonus < 1000
OR b.bonus IS NULL
🔍 쿼리 분석
- LEFT JOIN : Employee 테이블의 모든 직원 정보를 유지하면서, Bonus 테이블에서 해당 직원의 보너스 정보를 결합합니다.
- WHERE b.bonus < 1000 OR b.bonus IS NULL : 보너스 금액이 1000 미만이거나, 보너스를 받지 않은 직원(b.bonus IS NULL)만 결과로 반환합니다.
- 출력 컬럼 : 직원의 name과 bonus를 조회합니다.
📌 실행 예제
Employee 테이블
empId | name | supervisor | salary |
3 | Brad | null | 4000 |
1 | John | 3 | 1000 |
2 | Dan | 3 | 2000 |
4 | Thomas | 3 | 4000 |
Bonus 테이블
empId | bonus |
2 | 500 |
4 | 2000 |
쿼리 실행 결과
name | bonus |
Brad | null |
John | null |
Dan | 500 |
- Thomas는 보너스가 2000이므로 보너스 금액이 1000 미만이거나 보너스를 받지 않은 직원이 아니므로 결과에 포함되지 않습니다.
🎯 결론
이 문제를 통해 LEFT JOIN과 NULL 값 처리, 특정 조건을 기반으로 데이터 필터링하는 방법을 익힐 수 있습니다.
실무에서도 보너스 지급 내역 분석, 혜택을 받지 못한 직원 목록 조회, 특정 금액 이하의 보너스 지급자 목록 생성 등의 다양한 시나리오에서 응용할 수 있습니다. 🚀
더 많은 SQL 문제 풀이를 보고 싶다면 LeetCode SQL 문제 모음을 확인해 보세요! 🚀
728x90
반응형
'LeetCode' 카테고리의 다른 글
[LeetCode] 607. Sales Person (0) | 2025.02.28 |
---|---|
[LeetCode] 586. Customer Placing the Largest Number of Orders (2) | 2025.02.28 |
[LeetCode] 511. Game Play Analysis 1 (0) | 2025.02.27 |
[LeetCode] 183. Customers Who Never Order (0) | 2025.02.25 |
[LeetCode] 182. Duplicate Emails (0) | 2025.02.24 |