首页 > 试题广场 >

查找最晚入职员工的所有信息

[编程题]查找最晚入职员工的所有信息
  • 热度指数:799700 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
有一个员工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
10005 1955-01-21 Kyoichi Maliniak
M 1989-09-12'
10006 1953-04-20
Anneke
Preusig
F 1989-06-02
10007
1957-05-23
Tzvetan
Zielinski
F 1989-02-10
10008
1958-02-19
Saniya
Kalloufi
M 1994-09-15
10009
1952-04-19
Sumant
Peac
F 1985-02-18
10010
1963-06-01
Duangkaew
Piveteau
F 1989-08-24
10011
1953-11-07
Mary
Sluis
F 1990-01-22
请你查找employees里最晚入职员工的所有信息,以上例子输出如下:
emp_no
birth_date
first_name
last_name
gender hire_date
10008
1958-02-19
Saniya
Kalloufi
M 1994-09-15
示例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');

输出

10008|1958-02-19|Saniya|Kalloufi|M|1994-09-15
SELECT
emp_no,
birth_date,
first_name,
last_name,
gender,
hire_date
FROM employees
ORDER BY hire_date DESC
LIMIT 1;
发表于 2025-03-06 16:19:40 回复(0)
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');

发表于 2025-03-04 20:54:33 回复(0)
sql200
select * from employees where hire_date=(select max(hire_date) from employees);

发表于 2025-02-18 10:52:31 回复(0)
用基础函数,当然也可以子查询,两种方法都试一试
SELECT
emp_no
,birth_date
,first_name
,last_name
,gender
,hire_date
FROM employees
ORDER BY hire_date DESC
LIMIT 1;
发表于 2025-02-14 22:51:02 回复(0)
防止有多人同一天入职的情况,使用了 IN 而不是 =
SELECT
    *
FROM
    employees
WHERE
    hire_date IN
    (
        SELECT
            MAX(hire_date)
        FROM
            employees
    );


发表于 2025-01-04 20:04:00 回复(0)
SELECT a.emp_no,
a.birth_date,
a.first_name,
a.last_name,
a.gender,
a.hire_date
FROM(SELECT
emp_no,
birth_date,
first_name,
last_name,
gender,
hire_date,
RANK() OVER(ORDER BY hire_date DESC) rank_date
FROM employees) a
WHERE a.rank_date =1
想复杂了,用窗口函数做出来的
发表于 2024-11-17 17:05:48 回复(0)
select
    *
from
    employees
order by
    hire_date desc
limit
    1


发表于 2024-10-05 13:44:58 回复(0)
select *
from employees
where hire_date in (
    select max(hire_date) as last_hire_date
    from employees)
关键点:找到最晚入职时间
因无法确认最晚入职是否只有1人,不能使用group by limit
发表于 2024-09-02 15:40:25 回复(0)
select *
from employees
where hire_date=
(
select hire_date
from employees
order by hire_date desc
limit 1
)

发表于 2024-08-02 16:32:38 回复(0)
select * from employees where hire_date=(select hire_date from employees order by hire_date desc limit 1);
发表于 2024-07-24 14:11:19 回复(0)
select *
from employees
where hire_date=(
    select max(hire_date) from employees
)

发表于 2024-07-17 16:22:26 回复(0)
窗口函数方法:
with a as(
	select *,
	rank() over(order by hire_date desc) as rn
	from employees
)

select emp_no, birth_date, first_name, 
last_name, gender, hire_date
from a
where rn = 1


编辑于 2024-03-21 16:10:18 回复(0)
select * from employees 
order by hire_date desc 
limit 1;

发表于 2024-02-05 11:37:01 回复(0)
select
emp_no
,birth_date,first_name,last_name,gender,hire_date
from(
select *
,rank()over(partition by emp_no order by hire_date desc) posn
from employees
) re
where posn=1
limit 1
发表于 2024-01-26 11:59:12 回复(0)
select * from employees
where hire_date =
(select max(hire_date) from employees)
编辑于 2024-01-10 16:06:31 回复(0)
遇事不决,开窗函数
select e.emp_no,
e.birth_date,
e.first_name,
e.last_name,
e.gender,
e.hire_date
from
(select emp_no,
birth_date,
first_name,
last_name,
gender,
hire_date,
dense_rank() over(order by hire_date desc) as rk
from employees) as e
where e.rk = 1

编辑于 2024-01-03 16:10:32 回复(0)