SQL题解 | 02 查找入职员工时间排名倒数第三的员工所有信息

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

https://www.nowcoder.com/practice/ec1ca44c62c14ceb990c3c40def1ec6c?tpId=82&&tqId=29754&rp=1&ru=/ta/sql&qru=/ta/sql/question-ranking

解题思路:

思路与第一题基本相同。将 employees 表中的信息按照 hire_date 降序排序,然后取排序后的第三条记录,即

ORDER BY hire_date DESC
LIMIT 2,1

解释一下 LIMIT 2,1 的意思:

SQL 中,行号是从 0 开始的。所以 LIMIT 2,1 中, 2 是指从第三条记录开始,1 是指取一条记录。合起来就是,从第三条记录开始(包括第三条记录!),取一条记录。

mysql 完整参考代码:

SELECT *
FROM employees
ORDER BY hire_date DESC
LIMIT 2,1;
全部评论
如果表里面倒数第三的正好有多条呢,这条sql只返回一条,不符合题目要求吧
2 回复 分享
发布于 2022-01-26 15:14
这错得离谱吧,你这只查出来一个,万一是多个呢
1 回复 分享
发布于 2023-09-12 21:13 北京
WITH RankedEmployees AS ( SELECT *, ROW_NUMBER() OVER (ORDER BY hire_date ASC) AS RowNum FROM employees ) SELECT * FROM RankedEmployees WHERE RowNum = (SELECT COUNT(*) FROM employees) - 2; -- 总数减去2得到倒数第三名
点赞 回复 分享
发布于 2024-11-22 01:16 广东
日期得去重
点赞 回复 分享
发布于 2023-08-11 17:02 浙江
有重复入职的,你这个只能取一个
点赞 回复 分享
发布于 2022-12-02 20:43 广东
一模一样的想法,结果内存超了
点赞 回复 分享
发布于 2021-12-07 14:24
为什么不能升序,然后取
点赞 回复 分享
发布于 2021-03-10 14:28

相关推荐

飞屋一号:实话实说就行,先争取一下能不能线上,不行就直接放弃,付出与回报不成正比
我的求职进度条
点赞 评论 收藏
分享
评论
31
2
分享

创作者周榜

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