LeetCode-SQL-nine
2020-03-19 本文已影响0人
皮皮大
Leetcode-sql-nine
本文中主要是介绍LeetCode
中关于SQL
的练习题,从易到难,循序渐进。文中会介绍题目和尽可能多的提供解答方案
577-员工奖金
题目
根据下面提供的两个表,选出所有奖金<1000
元的雇员姓名及奖金数额
显示结果应该为:
image-20200319230336057答案
答案
- 将两个表进行联结:
left right
;需要考虑为null
的情况
-- 自己的方案:需要考虑NULL的情况
select name, bonus
from employee e
left join bonus b on e.empId = b.empId
where bonus < 1000 or bonus is null;
- 使用
ifnull
函数
-
IFNULL(exp1,exp2)
函数用于判断exp1
是否为NULL
,如果为NULL
则返回exp2
的值,如果不为NULL
则返回exp1
的值 -
using
关键字的使用
select name, bonus
from employee left join bonus using (empId) -- 如果两个表中有相同的字段,则可使用using关键字
where ifnull(bonus, 0) < 1000; --
总结
- 考虑周全:NULL的使用
- using关键字、ifnull函数的使用
584-寻找用户推荐人
题目
在下面给定的表中,保存了所有客户信息和他们的推荐人。写一个查询语句,返回一个编号列表,列表中编号的推荐人的编号都不是2
image上面示例的结果为:
image答案
需要通过where
条件进行判断,不要忘记NULL
的情形
select name
from customer
where referee_id != 2 or referee_id is null; -- 自己没有考虑NULL的情况