美文网首页
每日Leetcode—SQL(3)

每日Leetcode—SQL(3)

作者: Chuck_Wu | 来源:发表于2019-04-17 22:17 被阅读0次

    180.连续出现的数字

    表Logs
    结果表

    方法一:

    select Num ConsecutiveNums from Logs l1,
    left join Logs l2 on l1.Id = l2.Id-1
    left join Logs l3 on l1.Id = l3.Id-2
    where l1.Num = l2.Num and l2.Num = l3.Num
    

    分析:该方法首先使用left join将表连接起来,再使用where查找满足条件的行。

    方法二:

    select Num ConsecutiveNums
    from Logs l1,Logs l2,Logs l3
    where l1.Num = l2.Num and l2.Num = l3.Num and l1.Id = l2.Id-1 and l2.Id = l3.Id-1 
    

    分析:该方法直接使用了where条件查找

    181.超过经历收入的员工

    表Employee

    给定 Employee 表,编写一个 SQL 查询,该查询可以获取收入超过他们经理的员工的姓名。在上面的表格中,Joe 是唯一一个收入超过他的经理的员工。


    结果表

    方法一:

    select Name Employee
    from Employee 
    where e1.Salary>(select e2.Salary from Employee e2 where e1.ManagerId = e2.Id)
    

    分析:取满足e1.ManagerId = e2.Id的行的Salary,并与e1表进行比较。

    方二:

    select e1.Name Employee
    from Employee e1 join Employee e2
    on e1.ManagerId = e2.Id and e1.Salary>e2.Salary
    

    分析:利用join取交集的方式对满足条件的行进行查找。

    方法三:

    select e1.Name Employee
    from Employee e1, Employee e2
    where e1.ManagerId = e2.Id and e1.Salary>e2.Salary
    

    分析:直接利用where判断出满足条件的行。

    相关文章

      网友评论

          本文标题:每日Leetcode—SQL(3)

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