LeetCode【577. 员工奖金】

表:Employee 

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| empId       | int     |
| name        | varchar |
| supervisor  | int     |
| salary      | int     |
+-------------+---------+
empId 是该表中具有唯一值的列。
该表的每一行都表示员工的姓名和 id,以及他们的工资和经理的 id。

表:Bonus

+-------------+------+
| Column Name | Type |
+-------------+------+
| empId       | int  |
| bonus       | int  |
+-------------+------+
empId 是该表具有唯一值的列。
empId 是 Employee 表中 empId 的外键(reference 列)。
该表的每一行都包含一个员工的 id 和他们各自的奖金。

编写解决方案,报告每个奖金 少于 1000 的员工的姓名和奖金数额。

以 任意顺序 返回结果表。

结果格式如下所示。

示例 1:

输入:
Employee table:
+-------+--------+------------+--------+
| empId | name   | supervisor | salary |
+-------+--------+------------+--------+
| 3     | Brad   | null       | 4000   |
| 1     | John   | 3          | 1000   |
| 2     | Dan    | 3          | 2000   |
| 4     | Thomas | 3          | 4000   |
+-------+--------+------------+--------+
Bonus table:
+-------+-------+
| empId | bonus |
+-------+-------+
| 2     | 500   |
| 4     | 2000  |
+-------+-------+
输出:
+------+-------+
| name | bonus |
+------+-------+
| Brad | null  |
| John | null  |
| Dan  | 500   |
+------+-------+

答:

每个奖金少于1000的员工的姓名和奖金数额,你可以使用SQL查询,首先从Employee表中获取所有员工的姓名和奖金数额,然后与Bonus表中的奖金进行关联,最后筛选出奖金少于1000的员工。以下是相应的SQL查询:

SELECT E.name, B.bonus
FROM Employee E
LEFT JOIN Bonus B
ON E.empId = B.empId
WHERE B.bonus < 1000 OR B.bonus IS NULL;

查询首先从Employee表(重命名为E)中选择员工的姓名和奖金数额,并通过LEFT JOIN与Bonus表(重命名为B)进行关联,关联条件是Employee表中的empId等于Bonus表中的empId。然后,使用WHERE子句筛选出奖金少于1000或者奖金为NULL的员工。

查询的结果将包含每个符合条件的员工的姓名和奖金数额,以及奖金为NULL的员工

猜你喜欢

转载自blog.csdn.net/s_sos0/article/details/133394766