SQL每日一題(2)

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

思路

思路1:limit限定
思路2:子查詢

答案

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

1、先order by降序排列
2、再limit限定,昨天說的limit m,n用到了,limit m,n表示從第m+1條數據開始,取n條數據,那麼limit2,1就表示從第3條數據開始,取1條數據,這樣就取了倒數第3條數據了。

 

用子查詢的思路和上一題是一樣的,也是假如hire_date有重複怎麼辦?如上圖所示,如果用思路1取到的是第3條數據,也就是hire_date = 1995-05-23這一條,但實際上它排名倒數第二,所以要用子查詢去重。

# 思路2
select * from employees where hire_date = 
(select distinct hire_date from employees 
 order by hire_date desc limit 2,1)

1、先對hire_date去重,然後order by降序limit限定取出真正的倒數第3條數據的hire_date
2、再子查詢where子句限定,讓hire_date 等於剛取出的倒數第三


猜你喜歡:
數據分析應關注AARRR模型的哪些指標

泰坦尼克號數據分析

深入淺出數據分析

《吊打分析師》實戰—我要租個好房

爲什麼要學統計學:赤裸裸的統計學

成爲數據分析師的第三年,我寫了10W字

@ 作者:可樂
@ 公衆號/知乎專欄/頭條/簡書:可樂的數據分析之路
@加個人微信:data_cola,備註:進羣,拉你入 可樂的數據分析羣 和各行各業的小夥伴交流探討數據分析相關內容

微信公衆號

微信公衆號

個人微信號

個人微信號

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