1873. 计算特殊奖金

简介: 1873. 计算特殊奖金

说在前面

🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。

题目描述

表: Employees

+-------------+---------+
| 列名        | 类型     |
+-------------+---------+
| employee_id | int     |
| name        | varchar |
| salary      | int     |
+-------------+---------+
employee_id 是这个表的主键(具有唯一值的列)。
此表的每一行给出了雇员id ,名字和薪水。

编写解决方案,计算每个雇员的奖金。如果一个雇员的 id 是 奇数 并且他的名字不是以 'M' 开头,那么他的奖金是他工资的 100% ,否则奖金为 0

返回的结果按照 employee_id 排序。

返回结果格式如下面的例子所示。

示例 1:

输入:
Employees 表:
+-------------+---------+--------+
| employee_id | name    | salary |
+-------------+---------+--------+
| 2           | Meir    | 3000   |
| 3           | Michael | 3800   |
| 7           | Addilyn | 7400   |
| 8           | Juan    | 6100   |
| 9           | Kannon  | 7700   |
+-------------+---------+--------+
输出:
+-------------+-------+
| employee_id | bonus |
+-------------+-------+
| 2           | 0     |
| 3           | 0     |
| 7           | 7400  |
| 8           | 0     |
| 9           | 7700  |
+-------------+-------+
解释:
因为雇员id是偶数,所以雇员id 是2和8的两个雇员得到的奖金是0。
雇员id为3的因为他的名字以'M'开头,所以,奖金是0。
其他的雇员得到了百分之百的奖金。

解题思路

  • 判断employee_id是否为偶数
employee_id % 2 <> 0
  • 判读名字是否为’M’开头
SUBSTRING(name, 1, 1) <> 'M'
  • 如果一个雇员的 id 是 奇数 并且他的名字不是以 'M' 开头,那么他的奖金是他工资的 100% ,否则奖金为 0
CASE 
    WHEN employee_id % 2 <> 0 AND SUBSTRING(name, 1, 1) <> 'M' THEN salary
    ELSE 0
END AS bonus

AC代码

SELECT 
    employee_id,
    CASE 
        WHEN employee_id % 2 <> 0 AND SUBSTRING(name, 1, 1) <> 'M' THEN salary
        ELSE 0
    END AS bonus
FROM employees order by employee_id;

公众号

关注公众号『前端也能这么有趣』,获取更多有趣内容。

说在后面

🎉 这里是 JYeontu,现在是一名前端工程师,有空会刷刷算法题,平时喜欢打羽毛球 🏸 ,平时也喜欢写些东西,既为自己记录 📋,也希望可以对大家有那么一丢丢的帮助,写的不好望多多谅解 🙇,写错的地方望指出,定会认真改进 😊,偶尔也会在自己的公众号『前端也能这么有趣』发一些比较有趣的文章,有兴趣的也可以关注下。在此谢谢大家的支持,我们下文再见 🙌。

目录
相关文章
|
7月前
银行定期存款利率,输入金额,输入年限,计算本息总额
银行定期存款利率,输入金额,输入年限,计算本息总额
121 0
|
7月前
7-66 计算工资 (15 分)
7-66 计算工资 (15 分)
67 0
|
3月前
企业发放的奖金根据利润提成
企业发放的奖金根据利润提成。
159 4
wustojc4011计算奖金
wustojc4011计算奖金
53 0
循环结构-慈善募捐——在全院10000学生中,征集慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数,以及平均每人捐款的数目。
循环结构-慈善募捐——在全院10000学生中,征集慈善募捐,当总数达到10万元时就结束,统计此时捐款的人数,以及平均每人捐款的数目。
245 0
|
编译器 C语言
第二周:计算
C语言第第二周内容,计算,是开启编程世界的第一步
159 0
|
算法 C++
201612-2 工资计算
201612-2 工资计算
128 0
201612-2 工资计算
|
机器学习/深度学习
某销售公司在年末的时候会向员工发放红包,发放的红包金额共有5种,获取的条件各不相同:   1) 五颗星红包,每人8000元,平均月绩效大于80件商品(>80),并且在本年度满勤; 2) 四颗星红包,每
某销售公司在年末的时候会向员工发放红包,发放的红包金额共有5种,获取的条件各不相同:   1) 五颗星红包,每人8000元,平均月绩效大于80件商品(>80),并且在本年度满勤; 2) 四颗星红包,每
239 0
|
机器学习/深度学习 人工智能 算法
程序人生 - 全国程序员5月工资出炉,平均14926元,你达到平均水平了吗?
程序人生 - 全国程序员5月工资出炉,平均14926元,你达到平均水平了吗?
602 0
程序人生 - 全国程序员5月工资出炉,平均14926元,你达到平均水平了吗?
下一篇
DataWorks