列表

详情


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

描述

有一个员工employees表简况如下:
emp_no
birth_date
first_name
last_name
gender hire_date
10001
1953-09-02
Georgi
Facello
M 1986-06-26
10002
1964-06-02
Bezalel
Simmel
F 1985-11-21
10003
1959-12-03
Parto
Bamford
M 1986-08-28
10004
1954-05-01
Christian
Koblick
M 1986-12-01

请你查找employees里入职员工时间排名倒数第三的员工所有信息,以上例子输出如下:
emp_no
birth_date
first_name
last_name
gender
hire_date
10001
1953-09-02
Georgi
Facello
M 1986-06-26
注意:可能会存在同一个日期入职的员工,所以入职员工时间排名倒数第三的员工可能不止一个。

示例1

输入:

drop table if exists  `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`));
INSERT INTO employees VALUES(10001,'1953-09-02','Georgi','Facello','M','1986-06-26');
INSERT INTO employees VALUES(10002,'1964-06-02','Bezalel','Simmel','F','1985-11-21');
INSERT INTO employees VALUES(10003,'1959-12-03','Parto','Bamford','M','1986-08-28');
INSERT INTO employees VALUES(10004,'1954-05-01','Chirstian','Koblick','M','1986-12-01');
INSERT INTO employees VALUES(10005,'1955-01-21','Kyoichi','Maliniak','M','1989-09-12');
INSERT INTO employees VALUES(10006,'1953-04-20','Anneke','Preusig','F','1989-06-02');
INSERT INTO employees VALUES(10007,'1957-05-23','Tzvetan','Zielinski','F','1989-02-10');
INSERT INTO employees VALUES(10008,'1958-02-19','Saniya','Kalloufi','M','1994-09-15');
INSERT INTO employees VALUES(10009,'1952-04-19','Sumant','Peac','F','1985-02-18');
INSERT INTO employees VALUES(10010,'1963-06-01','Duangkaew','Piveteau','F','1989-08-24');
INSERT INTO employees VALUES(10011,'1953-11-07','Mary','Sluis','F','1990-01-22');

输出:

10005|1955-01-21|Kyoichi|Maliniak|M|1989-09-12

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

Sqlite 解法, 执行用时: 10ms, 内存消耗: 3360KB, 提交时间: 2021-12-20

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

Sqlite 解法, 执行用时: 10ms, 内存消耗: 3372KB, 提交时间: 2021-12-19

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

Sqlite 解法, 执行用时: 10ms, 内存消耗: 3372KB, 提交时间: 2021-09-07

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

Sqlite 解法, 执行用时: 10ms, 内存消耗: 3384KB, 提交时间: 2021-12-31

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

Sqlite 解法, 执行用时: 10ms, 内存消耗: 3388KB, 提交时间: 2021-12-21

select * from employees where hire_date = (
select hire_date from  employees t  
group by  hire_date order by  hire_date desc  limit 1  offset 2) 

上一题