LeetCode-SQL-nine

作者: 皮皮大 | 来源:发表于2020-03-19 23:37 被阅读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函数
    • 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;  -- 
    

    总结

    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的情况
    

    相关文章

      网友评论

        本文标题:LeetCode-SQL-nine

        本文链接:https://www.haomeiwen.com/subject/nhtdyhtx.html