返回介绍

solution / 0500-0599 / 0577.Employee Bonus / README

发布于 2024-06-17 01:03:59 字数 2130 浏览 0 评论 0 收藏 0

577. 员工奖金

English Version

题目描述

表: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   |
+------+-------+

解法

方法一:左连接

我们可以使用左连接,将 Employee 表和 Bonus 表按照 empId 进行连接,然后筛选出奖金小于 $1000$ 的员工。注意,连接后的表中,bonusNULL 的员工也应该被筛选出来,因此我们需要使用 IFNULL 函数将 NULL 值转换为 $0$。

# Write your MySQL query statement below
SELECT name, bonus
FROM
  Employee
  LEFT JOIN Bonus USING (empId)
WHERE IFNULL(bonus, 0) < 1000;

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文