본문 바로가기

[LeetCode] 577. Employee Bonus

by qwee0328 2025. 2. 27.

📝 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)만 결과로 반환합니다.
  • 출력 컬럼 : 직원의 namebonus를 조회합니다.

 

📌 실행 예제

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
반응형