Leecode_学习计划_每日一练——第二天

学习计划:「SQL」 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台

第一题:

题目:

表: 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排序。

代码:

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

知识点: case when then 结构

类似于switch case结构,有两种用法

用法一:简单case函数

select 
case sex
    when '1' then '男'
    else then '女' end
from tb_sex

用法二:case搜索函数

update db_bonus
set bonus = 
    case 
		when salary > 200 then salary * 0.5  
		when salary > 300 then salary * 1  
		else 0 end

第三题

题目:

表: Person

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| id          | int     |
| email       | varchar |
+-------------+---------+
id是该表的主键列。
该表的每一行包含一封电子邮件。电子邮件将不包含大写字母。
 

编写一个 SQL 删除语句来 删除 所有重复的电子邮件,只保留一个id最小的唯一电子邮件。

以 任意顺序 返回结果表。 (注意: 仅需要写删除语句,将自动对剩余结果进行查询)

答案:

delete p1 from Person p1 , Person p2
where p1.email = p2.email and p1.id > p2.id

将person表与自己建立连接,每次都从p1表中获取一条数据与第二表的所有数据进行比较,如果email重复,并且p1的id对于p2的id则删除(只保留id最小的)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值