Fork me on GitHub

Leetcode-sql-six

Leetcode-sql-six

本文中主要是介绍LeetCode中关于SQL的练习题,从易到难,循序渐进。文中会介绍题目和尽可能多的提供解答方案

577-员工奖金

题目

根据下面提供的两个表,选出所有奖金<1000元的雇员姓名及奖金数额

显示结果应该为:

image-20200319230336057

答案

  1. 将两个表进行联结:left right;需要考虑为null的情况
1
2
3
4
5
-- 自己的方案:需要考虑NULL的情况
select name, bonus
from employee e
left join bonus b on e.empId = b.empId
where bonus < 1000 or bonus is null;
  1. 使用ifnull函数
  • IFNULL(exp1,exp2) 函数用于判断exp1是否为 NULL,如果为 NULL 则返回exp2的值,如果不为NULL 则返回exp1的值
  • using关键字的使用
1
2
3
select name, bonus
from employee left join bonus using (empId) -- 如果两个表中有相同的字段,则可使用using关键字
where ifnull(bonus, 0) < 1000; --

总结

  1. 考虑周全:NULL的使用
  2. using关键字、ifnull函数的使用

584-寻找用户推荐人

题目

在下面给定的表中,保存了所有客户信息和他们的推荐人。写一个查询语句,返回一个编号列表,列表中编号的推荐人的编号都不是2

上面示例的结果为:

答案

需要通过where条件进行判断,不要忘记NULL的情形

1
2
3
select name
from customer
where referee_id != 2 or referee_id is null; -- 自己没有考虑NULL的情况

本文标题:Leetcode-sql-six

发布时间:2020年03月19日 - 23:03

原始链接:http://www.renpeter.cn/2020/03/19/Leetcode-sql-six.html

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。

Coffee or Tea