有一个员工employees表简况如下: 建表语句如下: CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`)); 请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下:-笔试面试资料

这是qklbishe.com第12813 篇笔试面试资料
提供答案分析,通过本文《有一个员工employees表简况如下:
建表语句如下: CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));
请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下:-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:

有一个员工employees表简况如下:
有一个员工employees表简况如下:          建表语句如下:   CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));             请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下:
建表语句如下:
CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));


请你查找employees里入职员工时间排名倒数第三的员工所有信息,以上例子输出如下:
有一个员工employees表简况如下:          建表语句如下:   CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));             请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下:
有一个员工employees表简况如下:          建表语句如下:   CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));             请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下: nomico271
select * from employees  where hire_date = (     select distinct hire_date from employees order by hire_date desc limit 2,1 ) 
LIMIT m,n : 表示从第m+1条开始,取n条数据;
LIMIT n : 表示从第0条开始,取n条数据,是limit(0,n)的缩写。

(1)首先需要加distinct去重。
假设 5-23(入职最晚日期)入职的有a,b,c 3人;
        5-22(入职第二晚日期)入职的有d,e 2人;
        5-21(入职倒数第三晚)入职的有f,g,h 3人;
        5-21前入职的若干…
若 不加distinct去重,那么按照日期倒序,limit 2,1从倒数第2行开始,取一条数据)的查询结果为 5-23
加了distinct去重,会按入职日期进行分组,多个相同入职日期会分为一组,这样limit 2,1的结果即为 5-21。
(2)外层的where条件中根据子查询查出的倒数第三晚入职的日期,就能查询出符合条件的员工信息。

2019-05-14 13:12:04 回复(62)
有一个员工employees表简况如下:          建表语句如下:   CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));             请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下: scut北辰
考虑到入职日期可能会有多个重复,最合理的SQL语句应为:
SELECT * FROM employees 
WHERE hire_date = (
SELECT DISTINCT hire_date FROM employees 
ORDER BY hire_date DESC limit 2,1
);
下图为我建立的employees表,注意倒数第三个入职员工有两个日期相同,且倒数第一,倒数第二也有相同的:
有一个员工employees表简况如下:          建表语句如下:   CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));             请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下:
运行以上SQL语句的结果为正确的结果
有一个员工employees表简况如下:          建表语句如下:   CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));             请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下:
而运行 SELECT * FROM employees ORDER BY hire_date DESC LIMIT 2,1;的结果为下图,是不正确的
有一个员工employees表简况如下:          建表语句如下:   CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));             请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下:
运行 SELECT * FROM employees 
WHERE hire_date = (
SELECT hire_date FROM employees 
GROUP BY hire_date ORDER BY hire_date DESC limit 2,1
);的结果也是正确的,如下图:
有一个员工employees表简况如下:          建表语句如下:   CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));             请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下:
但是实际测试的结果distinct比group by语句更快,而且内存占用也更小

2019-03-02 16:47:19 回复(9)
有一个员工employees表简况如下:          建表语句如下:   CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));             请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下: 村长,那人偷牛!
select *  from  employees where hire_date=(select distinct hire_date from employees order by hire_date desc limit 2,1);

2017-09-01 04:28:13 回复(33)
有一个员工employees表简况如下:          建表语句如下:   CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));             请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下: Mountain_Zheng
可能有多个记录,所有最佳结果写成如下形式:
SELECT *
FROM
employees 
WHERE hire_date = (SELECT hire_date FROM employees ORDER BY hire_date DESC LIMIT 2,1);

2017-07-14 21:29:04 回复(17)
有一个员工employees表简况如下:          建表语句如下:   CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));             请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下: EricZeng

一种比较严谨的写法:

SELECT emp_no, birth_date, first_name, last_name, gender, hire_date FROM employees WHERE hire_date=(                 SELECT DISTINCT hire_date                  FROM employees                 ORDER BY hire_date DESC                 LIMIT 2,1) 

另外根据阿里巴巴Java开发规范v1.4中,数据库规约,关键词应大写,SELECT后面不要跟着“*”,要把具体的字段写出来。

2018-11-21 22:21:02 回复(11)
有一个员工employees表简况如下:          建表语句如下:   CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));             请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下: 华科平凡

思路:按入职时间倒序排列,然后用limit选择第三个即可。


select * from employees order by hire_date desc limit 2,1 

2017-11-08 17:11:38 回复(17)
有一个员工employees表简况如下:          建表语句如下:   CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));             请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下: 刘德聪
使用了一个技巧。
只需要找到日期小于其他人数为2即可。(注意倒数第三,其实日期是排第三)
select * from employees e1
where 2=(select count(*) from employees e2 where e1.hire_date < e2.hire_date);

2017-08-06 00:39:01 回复(9)
有一个员工employees表简况如下:          建表语句如下:   CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));             请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下: 小青年_
select emp_no,birth_date,first_name,last_name,gender,hire_date from employees where hire_date =  ( select hire_date from employees group by hire_date order by hire_date desc limit 2,1)

group by,order by,limit
至于为什么用group by不用distinct,请看group by与distinct性能比较

2018-06-14 13:19:15 回复(5)
有一个员工employees表简况如下:          建表语句如下:   CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));             请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下: 恋雪咏霜
select * from employees
where hire_date=(select distinct hire_date from employees order by hire_date DESC limit 2,1)
可能有多个入职员工
排序要去重!!!

2017-08-12 10:06:39 回复(5)
有一个员工employees表简况如下:          建表语句如下:   CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));             请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下: liu993083028
select * from(
select rownum rn ,a.*  from
(SELECT * FROM  employees order by hire_date desc )a )
where rn=3

2017-08-20 15:45:59 回复(0)
有一个员工employees表简况如下:          建表语句如下:   CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));             请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下: stonebox
似乎不支持Oracle的分析函数,累觉不爱
select emp_no,birth_date,first_name,last_name,gender,hire_date from 
(select emp_no,birth_date,first_name,last_name,gender,hire_date,
dense_rank() over (order by hire_date desc) dense_rank
from employees) e
where dense_rank=3;
这样即使有重复的也可以取出来了

2018-11-06 11:36:01 回复(3)
有一个员工employees表简况如下:          建表语句如下:   CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));             请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下: 詆調壹點
可能有多个 select * from employees where hire_date = (select hire_date from employees order by hire_date desc limit 2,1);

2017-07-14 00:53:49 回复(4)
有一个员工employees表简况如下:          建表语句如下:   CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));             请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下: 杭州好热啊
最最最严谨的解法!
使用相关子查询,可以查询出并列第三(重复值),也不怕前面有重复值
select *
from employees e1
where (select count(distinct e2.hire_date)
      from employees e2
      where e1.hire_date < e2.hire_date) = 2

2019-10-16 07:01:00 回复(1)
有一个员工employees表简况如下:          建表语句如下:   CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));             请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下: 半纸流年-轻描了谁的夏天
select * from employees order by hire_date desc limit 2,1
2017-08-12 09:45:14 回复(0)
这题关键是去重,不用使用子查询。因为去重是发生在limit和offset关键字之前,所以只需要在第一层查询中添加distinct,搭配排序和limit关键字便可作出答案
select distinct * from employees order by hire_date desc limit 1 offset 2

2020-03-11 21:04:22 回复(1)
有一个员工employees表简况如下:          建表语句如下:   CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));             请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下: llcai
这个题目有问题吧!!! 如果大家的成绩都一样,你说谁是倒数第三名呢?
2018-03-17 09:37:52 回复(2)
有一个员工employees表简况如下:          建表语句如下:   CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));             请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下: drdr
SELECT * FROM employees WHERE hire_date = (SELECT DISTINCT hire_date                     FROM employees                     ORDER BY hire_date DESC                    LIMIT 2,1);

2017-08-21 20:35:55 回复(0)
有一个员工employees表简况如下:          建表语句如下:   CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));             请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下: feelinghappy
select  *  from  employees  order   by  hire_date  desc  limit 2,1  
2017-07-10 14:36:08 回复(0)
有一个员工employees表简况如下:          建表语句如下:   CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));             请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下: 区块链毕设学生459015444号
有大佬能帮我看一下代码哪里错了嘛?
SELECT *
FROM employees
WHERE hire_date =
(SELECT hire_date 
FROM
(SELECT hire_date,dense_rank() over (order by hire_date DESC) as ranking
FROM employees)T
WHERE ranking = 3)TT

2021-04-25 10:58:32 回复(2)
有一个员工employees表简况如下:          建表语句如下:   CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`));             请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下: 区块链毕设学生328748148号
select * from employees order by hire_date desc limit 1 offset 2
先通过入职时间进行倒叙排序,然后在根据limit进行分页,而limit和offset一起使用的时候limit后面的值是要取的个数,而offset后面的值则是要跳过的个数

2021-04-14 15:22:03 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » 有一个员工employees表简况如下: 建表语句如下: CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL,  `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` char(1) NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (`emp_no`)); 请你查找employees里入职员工时间排名倒数第三的员工所有信息, 以上例子输出如下:-笔试面试资料

提供最优质的资源集合

立即查看 了解详情