Last updated on March 10th, 2025 at 11:11 pm
Here, we see the Employee Bonus LeetCode Solution. This Leetcode problem is solved using MySQL and Pandas.
List of all LeetCode Solution
Level of Question
Easy

Employee Bonus LeetCode Solution
Table of Contents
1. Problem Statement
Column Name | Type |
empId | int |
name | varchar |
supervisor | int |
salary | int |
Employee
empId is the column with unique values for this table. Each row of this table indicates the name and the ID of an employee in addition to their salary and the id of their manager.
Column Name | Type |
empId | int |
bonus | int |
Bonus
empId is the column of unique values for this table. empId is a foreign key (reference column) to empId from the Employee table. Each row of this table contains the id of an employee and their respective bonus.
Write a solution to report the name and bonus amount of each employee with a bonus less than 1000
.
Return the result table in any order.
The result format is in the following example.
Example 1:
Input:
empId | name | supervisor | salary |
3 | Brad | null | 4000 |
1 | John | 3 | 1000 |
2 | Dan | 3 | 2000 |
3 | Thomas | 3 | 4000 |
empId | bonus |
2 | 500 |
4 | 2000 |
Output:
name | bonus |
Brad | null |
John | null |
Dan | 500 |
2. Code Implementation in Different Languages
2.1 Employee Bonus MySQL
select name, bonus from Employee as e left join Bonus as b on e.empId = b.empId where bonus < 1000 or bonus is null;
2.2 Employee Bonus Pandas
import pandas as pd def employee_bonus(employee: pd.DataFrame, bonus: pd.DataFrame) -> pd.DataFrame: # Merge Employee and Bonus tables using a left join result_df = pd.merge(employee, bonus, on='empId', how='left') # Filter rows where bonus is less than 1000 or missing result_df = result_df[(result_df['bonus'] < 1000) | result_df['bonus'].isnull()] # Select "name" and "bonus" columns result_df = result_df[['name', 'bonus']] return result_df