SQL2_查找入职员工时间排名倒数第三的员工所有信息

问题有疑惑的地方在于 排名是按何种顺序来排:

  • 1.如果按入职时间升序排列,则时间排名倒数第三的员工入职日期较晚 (默认这种)
  • 2.如果按入职时间降序排列,则时间排名倒数第三的员工入职日期较早
    但无论哪一种我们指定排序关键词就可以了。

考察点:

  • 1.limit [偏移量,] 行数 ([] 中表示可选参数,可以省略)
  • 2.标量子查询

解答

  • 1.查找时间排名倒数第三的员工入职日期:

      select distinct hire_date
      from employees
      order by hire_date desc
      limit 2,1;
    
  • 2.查找对应日期下的员工信息

    select *
    from employees
    where hire_date = 
    ( select distinct hire_date
      from employees
      order by hire_date desc
      limit 2,1);
    

附:用开窗函数 dense_rank() ,但是会多一列排序构造列

    select *
    from 
    (select  *,
    dense_rank() over (order by hire_date desc) as ranking
    from employees ) as ep
    where ranking = 3;

版权声明:本文为quyi0606原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。