题解 | 三种方法#查找入职员工时间排名倒数第三的员工所有信息#

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

http://www.nowcoder.com/practice/ec1ca44c62c14ceb990c3c40def1ec6c

-- 使用窗口函数
select
emp_no,
birth_date,
first_name,
last_name,
gender,
hire_date
from
(
select
*,
dense_rank() over (
order by
hire_Date desc
) rk
from
employees
) a
where
rk = 3

-- 使用自连接
select
emp_no,
birth_date,
first_name,
last_name,
gender,
hire_date
from
(
select
a.*,
count(b.hire_date) as num
from
employees a
left join employees b on a.hire_date < b.hire_date
group by
a.emp_no,
a.birth_date,
a.first_name,
a.last_name,
a.gender,
a.hire_date
) c
where
num = 2

-- 使用子查询,利用limit分页
SELECT *
FROM employees
WHERE hire_date = (
SELECT DISTINCT hire_date
FROM employees
ORDER BY hire_date DESC -- 倒序
LIMIT 1 OFFSET 2 -- 去掉排名倒数第一第二的时间,取倒数第三
);

全部评论

相关推荐

点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务