美文网首页
SQL1-查找最晚入职员工的所有信息

SQL1-查找最晚入职员工的所有信息

作者: 何几时 | 来源:发表于2021-03-19 17:19 被阅读0次

这道题有三种解法

image.png

思路一(不推荐):

假定最晚入职员工是只有一个人,可以利用对 hire_date 字段进行降序排序,那么排序第一行数据正是我们所要找的数据,这时候利用 limit 0,1 进行分页(0指的是第一页!1是指一页只显示一条信息)

select *
from employees
order by hire_date desc
limit 0,1;

思路2:

这次我们不再假定只有一个人,而是预估最晚入职的人可能是多个人,所以需要找到 hire_date 的最大值,只要 hire_date 等于最大值,则查询出来对应的所有信息,自己比较自己的最大值立即推子查询

select *
from employees
where `hire_date` = (
  select max(`hire_date`)
  from employees
);

思路3(强推):

这个思路是由力扣的数据库第185题-部门工资前三高的员工的排名题解排名第二启发的,这里需要换一个思维。最晚入职 意思是hire_date 的最大值。此时需要“我”影分身“你”,这里,“我”和“你”都是同一张表的不同别名。那么要找“我”的hire_date 的最大值,也就是说“你”比我大的数量是0(即在我前面的数据是0条)。这里注意要用自己比较自己的最大值立即推子查询,而且要加别名“我”(即e1)和“你”(即e2)。

select *
from employees e1
where 0 = (
  select count(distinct e2.`hire_date`)
  from employees e2
  where e2.`hire_date` > e1.`hire_date`
);

One More Thing

进阶一点的题就是leetcode的第185题

image.png
思路是一样的,e1=e2=employees,找出排名前三的,也就是“你”比“我”大的数据条数小于3,记住不能是小于等于,因为等于的话意味着在“我”前面有三个人,那我不就第四名了。
select d.Name Department,e1.Name Employee,e1.Salary Salary
from Employee e1
join Department d on e1.DepartmentID=d.Id 
where 3 > (
    select count(distinct e2.Salary)
    from Employee e2
    where e2.Salary > e1.Salary and e1.DepartmentID=e2.DepartmentID
);

当然这道题还有更加优雅的方法,利用开窗函数解决,详情请见leetcode数据库第185题

相关文章

  • 牛客网:sql题

    1、查找入职最晚的员工信息 ?:注意最晚不一定只有一个员工 2、查找入职员工时间排名倒数第三的员工所有信息 3\

  • sql操作第一篇

    查找最晚入职员工的所有信息 解法: 查找入职员工时间排名倒数第三的员工所有信息

  • SQL1-查找最晚入职员工的所有信息

    这道题有三种解法 思路一(不推荐): 假定最晚入职员工是只有一个人,可以利用对 hire_date 字段进行降序排...

  • 数据库SQL线上笔试编程题Ⅰ(练习向)

    1.查找入职员工时间排名倒数第三的员工所有信息 MyCode: 2. 查找最晚入职员工的所有信息 3.查找各个部门...

  • 牛客网 sql1-10

    查找最晚入职员工的所有信息 2.查找入职员工时间排名倒数第三的员工所有信息 3.查找各个部门当前(to_date=...

  • 牛客网sql实战

    1.查找最晚入职员工的所有信息 2.查找入职员工时间排名倒数第三的员工所有信息 3.查找各个部门当前(to_dat...

  • MySQL练习1

    -- Q1:查找最晚入职员工的所有信息 -- Q2:查找入职员工时间排名倒数第三的员工所有信息 -- Q3:查询当...

  • 数据库SQL实战|SQL答案集合及解析(1-10)

    牛客数据库SQL实战题(1-10题) 1、查找最晚入职员工的所有信息 答案 这里主要的争论点是,最晚入职的是一个人...

  • 查找最晚入职员工的所有信息

    tag 最大值 最小值 记 根据我哥所说,所有的能用已经封装好的方法,一定要使用,不要想着自己写 题目 查找...

  • 牛客网sql实战(一)

    1.查找最晚入职员工的所有信息注意:同一天入职的可能有多个人法一:利用max函数找到最大的hire_date对应的...

网友评论

      本文标题:SQL1-查找最晚入职员工的所有信息

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