首页 > 试题广场 >

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

[编程题]查找最晚入职员工的所有信息
  • 热度指数:791522 时间限制: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
头像 程序员麻薯
发表于 2020-01-03 10:11:36
精华题解 /* select * from employees order by hire_date desc limit 1; */ /* 使用limit 与 offset关键字 */ /* select * from employees order by hire_dat 展开全文
头像 云胡同学
发表于 2020-01-17 09:55:37
查找最晚入职员工的所有信息题解 思路一 知识点 ORDER BY 根据指定的列对结果集进行排序,默认按照升序,降序 ORDER BY DESC LIMIT(m, n) 从第 m + 1 行开始取 n 条记录 最晚员工自然是 hire_data,最晚可以用排序 ORDER BY DESC 降序 展开全文
头像 Karaa
发表于 2020-03-05 19:40:38
查找特定行 条件:最晚入职条件代码:WHERE hire_date = (SELECT MAX(hire_date) FROM employees) SELECT * FROM employees WHERE hire_date = ( SELECT MAX(hire_date) F 展开全文
头像 牛客511378724号
发表于 2020-04-20 15:43:33
/*因为不知道最晚入职的员工有多少,所以不适合用排序查询order by + 分页查询limit的方法,可以先max()函数找出最晚入职的日期,然后通过where后面的子查询找出所有员工信息。*/select * from employees where hire_date = ( s 展开全文
头像 N刻后告诉你
发表于 2020-05-19 20:26:58
题目:查找最晚入职员工的所有信息:假定:所有的数据里员工入职的日期都不是同一天 方法1:子查询(最佳)select * from employeeswhere hire_date =(select max(hire_date) from employees);或select * from emplo 展开全文
头像 看清所以看轻ゝ
发表于 2021-01-21 15:13:07
查找最晚入职员工的所有信息 使用MySQL数据库语法 思路一 使用order by关键字进行降序排列,并使用limit选择最后一条 实现方式如下:SELECT * FROM employees ORDER BY hire_date DESC LIMIT 1;这种方法存在缺陷,最晚入职员工不代 展开全文
头像 myorange
发表于 2020-04-22 09:17:25
逐步优化 相关子查询 20ms select * from employees where hire_date = (select max(hire_date) from employees); 不相关子查询 15ms select e1.* from employees e1 join ( 展开全文
头像 冰山一角-牛客
发表于 2020-10-28 00:08:59
题目描述 查找最晚入职员工的所有信息,为了减轻入门难度,目前所有的数据里员工入职的日期都不是同一天(sqlite里面的注释为--,mysql为comment) CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL, -- '员工编号' `birt 展开全文
头像 此用户名涉嫌违规
发表于 2021-02-25 18:08:41
如果只是题目描述的例子,使用limit就够了。 select * from employees order by hire_date desc limit 1;但是如果数据表里存在多个结果。比如最晚入职的那天有多个人入职。上面的结果就是错误的,因为限制了结果为一个。想要正确的包含所有结果。下列代码才 展开全文
头像 109号
发表于 2021-01-04 13:18:33
题目中已经说明了“员工入职的日期都不是同一天”,这个时候直接使用order by按照降序desc排列,选取第一条(limit)数据即可 SELECT * FROM employees ORDER BY hire_date DESC LIMIT 1如果有多个员工的入职日期相同,就需要使用子查询限定最晚 展开全文
头像 燃气热水器
发表于 2021-03-19 14:34:20
方案一 先查询最晚入职时间,再根据最晚入职时间比对进而得出最晚入职的员工信息select * from employees as a where a.hire_date = (select max(hire_date) from employees) 方案二 使用limit语句(此方案具有局 展开全文