牛客:數據庫SQL實戰(一)查詢入職最晚的員工的所有信息

1 題目描述

查找最晚入職員工的所有信息

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`));

2 解題思路

1 利用統計函數 MAX() 找出最大的時間值

select * from employees where hire_date = (select max(hire_date) from employees);

2 利用排序後篩選第一條

不過該方法利用了limit 函數,在MySQL下是有這個函數的,但是在Oracle中並無此函數。

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

LIMIT m,n : 表示從第m+1條開始,取n條數據;

LIMIT n : 表示從第0條開始,取n條數據,是limit(0,n)的縮寫。

所以:LIMIT 0,1 表示從第一條數據開始,取1條數據,即最晚入職員工

oracle數據庫不支持mysql中limit功能,但可以通過rownum來限制返回的結果集的行數,rownum並不是用戶添加的字段,而是oracle系統自動添加的,例如:

select * from employees  where rownum<=1

但是似乎牛客網是不支持oracle特有的SQL方法的。看了一下,牛客網SQL語句的編譯使用的是SQLite

3 採用top函數

select top 1 * from employees order by hire_date desc

不過牛客不通過這個代碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章