LeetCodeSQL专项计划:1873. 计算特殊奖金

48 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 21 天,点击查看活动详情

难度评分

难度评分:⭐

题目

题目详情请点击下述链接,这里就不做介绍。

1873. 计算特殊奖金

image.png

Create Table

创建名为products的MySQL数据库表:

该表包含三个列:

  1. employee_id:一个整数类型,表示雇员的id。这个字段是主键,意味着每个雇员都有一个唯一的ID。
  2. name:一个字符串类型,表示雇员的名字。这个字段可以为空。
  3. salary:一个整数类型,表示雇员的薪水。这个字段可以为空。

该表使用InnoDB引擎,字符集为utf8,字符编码为utf8_general_ci,存储引擎行格式是Dynamic

DROP TABLE IF EXISTS `Employees`;
CREATE TABLE `Employees`  (
  `employee_id` int(10) NOT NULL,
  `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `salary` int(10) NULL DEFAULT NULL,
  PRIMARY KEY (`employee_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

Insert

插入内容不作额外解释,内容均来自于题目示例的情况。

INSERT INTO `Employees`(`employee_id`, `name`,`salary`) VALUES 
(2, 'Meir',3000),(3,'Michael',3800),(7,'Addilyn',7400),(8,'Juan',6100),(9,'Kannon',7700);

SQL

SQL查询语句,用于从一个名为employees的表中检索数据,并根据条件计算出用户的奖金值。

主要是涉及到IF(condition, value_if_true, value_if_false),符合该题根据某条件返回何值,在SQL中经常使用。最后涉及ORDER BY语句,这部分查询语句按employee_id升序对结果进行排序。

SELECT employee_id , IF(MOD(employee_id,2) !=0 AND LEFT(name,1)!='M',salary,0) AS bonus FROM employees ORDER BY employee_id;

备注

这题主要使用IF函数为每个员工计算bonus值。

IF函数需要三个参数

  1. 要评估的条件
  2. 如果条件为真要返回的值
  3. 如果条件为假要返回的值。

在这种情况下,如果employee_id是奇数且name的第一个字母不是"M"则:bonus值为salary,否则为0。

注意

IF函数可以用于查询中作为列输出,它的作用是根据给定的条件来返回不同的值。