大数据,机器学习,人工智能数据/数据库人工智能/模式识别/机器学习精华专题

LeetCode-SQL-nine

2020-03-19  本文已影响0人  皮皮大

Leetcode-sql-nine

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

577-员工奖金

题目

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

image

显示结果应该为:

image-20200319230336057

答案

答案

  1. 将两个表进行联结: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;
  1. 使用ifnull函数
select name, bonus
from employee left join bonus using (empId)   -- 如果两个表中有相同的字段,则可使用using关键字
where ifnull(bonus, 0) < 1000;  -- 

总结

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

584-寻找用户推荐人

题目

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

image

上面示例的结果为:

image

答案

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

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

猜你喜欢

热点阅读