LeetCode数据库---1873. 计算特殊奖金

2020.05.13.

题目:

表: Employees
+-------------+---------+
| 列名        | 类型     |
+-------------+---------+
| employee_id | int     |
| name        | varchar |
| salary      | int     |
+-------------+---------+
employee_id 是这个表的主键。
此表的每一行给出了雇员id ,名字和薪水。
 
写出一个SQL 查询语句,计算每个雇员的奖金。如果一个雇员的id是奇数并且他的名字不是以'M'开头,
那么他的奖金是他工资的100%,否则奖金为0。 Return the result table ordered by employee_id. 返回的结果集请按照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。 其他的雇员得到了百分之百的奖金。 来源:力扣(LeetCode) 链接:https://leetcode.cn/problems/calculate-special-bonus

知识点:

1. 整体结构上, 用case when then else end 或 if

2. 字符串函数。以'M'开头,可以用 LIKE 'M%' ,也可以用 LEFT(name,1) = 'M'

   LEFT(str, n):提取字符串最左边的n个字符

# 用 case when
select
employee_id, case when employee_id % 2 = 1 and left(name, 1) != 'M' then salary else 0 end as bonus from Employees order by employee_id;

或者

# 用 if
select employee_id,
if(
    employee_id % 2 = 1 and left(name, 1) != 'M', salary, 0
) as bonus
from Employees
order by employee_id;

 

posted @ 2022-05-14 21:34  射手座的小怪兽  阅读(60)  评论(0编辑  收藏  举报