[LeetCode] SQL 50 / MySQL / 577. Employee Bonus

2024. 1. 6. 17:39Coding/LeetCode-SQL

문제 링크 

https://leetcode.com/problems/employee-bonus/description/?envType=study-plan-v2&envId=top-sql-50

 

Employee Bonus - LeetCode

Can you solve this real interview question? Employee Bonus - Table: Employee +-------------+---------+ | Column Name | Type | +-------------+---------+ | empId | int | | name | varchar | | supervisor | int | | salary | int | +-------------+---------+ empId

leetcode.com

 

문제 

 

코드

# Write your MySQL query statement below
SELECT A.name, B.bonus
FROM EMPLOYEE A
LEFT JOIN BONUS B
ON B.empID = A.empID
WHERE IFNULL(B.bonus, 0) < 1000;

 

1. 결과 예시를 보면 null 값도 출력되는 것을 알 수 있다.

즉, 보너스를 받지 않은 사원도 출력해야한다는 뜻으로, bonus 테이블에는 없지만 employee 테이블에는 있는 경우도 출력해야한다. 

따라서 left join을 empID에 대해 해준다. (두 테이블의 고유키이기 때문이다. )

2. 여기서 null값은 보너스가 없는 사람 = 보너스가 0인 사람이라는 뜻

MySQL에서 지원하는 IFNULL() 함수를 이용해서 null 대신 0이 나오도록 하고 이를 1000과 비교하도록 조건절을 구성하면 된다.