SQL专项训练-第二天 (排序&修改)
题目类型:排序&修改
难度:简单
今天依旧是康复训练
第一题:1873. 计算特殊奖金
-
题目链接:1873. 计算特殊奖金
-
思路:
本题要使用sql中的case when
语句,通过本题,知道了怎样写case when
语句,通过判断布尔表达式的值,就像java
中的if
语句一样。这一题的处理逻辑并不难,但要知道具体的sql语句怎样写。
CASE input_expression
WHEN when_expression THEN
result_expression [...n ] [
ELSE
else_result_expression
END
- SQL语句:
select employee_id, case when employee_id != (employee_id >> 1) << 1 and name not like 'M%'
then salary
else 0
end as 'bonus'
from Employees
order by employee_id;
第二题:627. 变更性别
-
题目链接:627. 变更性别
-
思路:
这一题对最简单的update
语句进行考察,但也要用到case when
语句,处理的逻辑也是很简单。 -
SQL语句:
update Salary
set sex = case sex when 'm' then 'f' else 'm' end;
第三题:196. 删除重复的电子邮箱
-
题目链接:196. 删除重复的电子邮箱
-
思路:
本题考查对delete语句的运用,因为我们要获得Email相等的值,所以条件中要有Email相等;在保留相同的Email值时需要最小的,所以要将p1中大于p2的全删除。 -
SQL语句:
DELETE p1 FROM Person p1,
Person p2
WHERE
p1.Email = p2.Email AND p1.Id > p2.Id