力扣-计算特殊奖金

news/2024/11/30 2:51:46/

大家好,我是空空star,本篇带大家了解一道简单的力扣sql练习题。

文章目录

  • 前言
  • 一、题目:1873. 计算特殊奖金
  • 二、解题
    • 1.正确示范①
      • 提交SQL
      • 运行结果
    • 2.正确示范②
      • 提交SQL
      • 运行结果
    • 3.正确示范③
      • 提交SQL
      • 运行结果
    • 4.正确示范④
      • 提交SQL
      • 运行结果
    • 5.其他
  • 总结


前言


一、题目:1873. 计算特殊奖金

表: 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排序。
查询结果格式如下面的例子所示。

输入:
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。
其他的雇员得到了百分之百的奖金。

二、解题

1.正确示范①

提交SQL

select employee_id,
case when employee_id%2=1 and name not like 'M%' then salary 
else 0 end bonus
from Employees
order by employee_id;

运行结果

2.正确示范②

提交SQL

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

运行结果

3.正确示范③

提交SQL

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

运行结果

4.正确示范④

提交SQL

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

运行结果

5.其他


总结

正确示范①思路:
如果一个雇员的id是奇数并且他的名字不是以’M’开头,那么他的奖金是他工资的100%,也就是他的工资,否则奖金为0。
采用 case when + %取余 + not like
case when employee_id%2=1 and name not like 'M%' then salary else 0 end
正确示范②思路:
思路同①
采用 case when + mod取余 + left
case when mod(employee_id,2)=1 and left(name,1)!='M' then salary else 0 end
正确示范③思路:
思路同①
采用 if + mod取余 + left
if(mod(employee_id,2)=1 and left(name,1)!='M',salary,0)
正确示范④思路:
雇员id是偶数,则奖金为0,
雇员id是奇数并且他的名字以’M’开头,则奖金为0,
否则奖金是他工资的100%
case when mod(employee_id,2)=0 then 0
when mod(employee_id,2)=1 and left(name,1)='M' then 0
else salary end


http://www.ppmy.cn/news/30290.html

相关文章

工具篇(五)炫酷排版,尽在LaTeX:让你的文档飞升吧!

作者的话 作为一个文本排版工具,latex一直以来都备受科研工作者、学生和出版社的青睐。但是对于初学者来说,latex的学习曲线可能会有些陡峭。因此,我写这篇博客旨在为初学者提供一个简单易懂的latex教程,让大家能够快速入门并掌握…

【数据结构】链式二叉树

前言 在前面我们学习了一些二叉树的基本知识,了解了它的结构以及一些性质,我们还用数组来模拟二叉树建立了堆,并学习了堆排序,可是数组结构的二叉树有很大的局限性,平常我们用的最多树结构的还是链式二叉树&#xff0c…

搜索引擎的设计与实现

技术:Java、JSP等摘要:随着互联网的快速发展,网络上的数据也随着爆炸式地增长。如何最快速筛选出对我们有用的信息成了主要问题。搜索引擎是指根据一定的策略、运用特定的计算机程序从互联网上搜集信息,在对信息进行组织和处理后&…

第六章 使用系统类提供国家语言支持 - 创建自定义语言环境

文章目录第六章 使用系统类提供国家语言支持 - 创建自定义语言环境创建自定义语言环境第六章 使用系统类提供国家语言支持 - 创建自定义语言环境 创建自定义语言环境 此示例将提供一个模板,用于使用自定义表创建自定义语言环境。自定义表将在 EBCDIC(美…

python 连接数据库

文章目录同步操作同步连Mysql同步连redis同步连mongodb异步操作异步连mysql异步连redis异步连mongodb同步操作 同步连Mysql python 连接mysql可以使用pymysql、mysqlclient等。 安装: # win pip install pymysql 连接mysql: # __author__ "laufing"…

Python3.8.8-Django3.2-Redis-连接池-数据类型-字符串-list-hashmap-命令行操作

文章目录1.认识Redis1.1.优点1.2.缺点2.在Django中Redis的连接3.Redis的基础用法3.1.hashmap结构3.2.list结构4.命令行查看数据库5.作者答疑1.认识Redis Remote DIctionary Server(Redis) 是一个key-value 存储系统,是跨平台的非关系型数据库。是一个开源的使用 AN…

Java八股——wait、sleep与park

sleep()、wait()、park()都可以使线程进入等待状态,但是3种方式在使用上和功能上都有些不同。 共同点: wait(),wait(long)和sleep(long)的效果都是让当前线程暂时放弃CPU的使用权,进入阻塞状态它们都可以被打断唤醒都是native方法执行sleep…

【机器学习】验证集loss震荡(loss的其他问题)

训练过程中发现,train loss一直下降,train acc一直上升;但是val loss、val acc却一直震荡。loss一会上一会下,但是总体趋势是向下的。 “loss震荡但验证集准确率总体下降” 如何解决? 测试集准确率这样震荡是正常的吗…