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

11 篇文章 0 订阅
7 篇文章 0 订阅

现有题目描述

​有一个员工employees表简况如下:

emp_no birth_date first_name last_name genderhire_date 
100011953-09-02Georgi Facello M1986-06-26
100021964-06-02Bezalel Simmel F1985-11-21
10003 1959-12-03Parto Bamford M1986-08-28
10004 1954-05-01Christian Koblick M1986-12-01
 

请你查找employees里入职员工时间排名倒数第三的员工所有信息,以上例子输出如下:

emp_no birth_date first_name last_name gender hire_date 
100011953-09-02Georgi Facello M1986-06-26

注意:可能会存在同一个日期入职的员工,所以入职员工时间排名倒数第三的员工可能不止一个。

解题思路

1、利用LIMIT对日期进行降序排列 取第三个日期的数据

2、利用dense_rank()函数取排名第三的函数

方法一:

SELECT * 
FROM employees
WHERE hire_date = (
    SELECT DISTINCT hire_date  -- 注意对日期进行去重
    FROM employees
    ORDER BY hire_date DESC       -- 倒序
    LIMIT 1 OFFSET 2              -- 去掉排名倒数第一第二的时间,取倒数第三
);  

方法二:

select emp_no ,
        birth_date ,
        first_name ,
        last_name ,
        gender,
        hire_date 
from(
        select *,dense_rank() over(order by hire_date desc)id from employees) a
where id=3 

此处有个小的知识点:

rank():跳跃排序;
dense_rank():连续排序;
row_number():没有重复值的排序(记录相等也是不重复的)可以进行分页使用。

个人公众号:数分小讲堂

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值