SQL2 查找入職員工時間排名倒數(shù)第三的員工所有信息
↑↑↑關(guān)注后"星標(biāo)"簡說Python
人人都可以簡單入門Python、爬蟲、數(shù)據(jù)分析 簡說Python推薦 題目來源:牛客網(wǎng)
解答:老表
首先說下上一題中留的討論問題:為什么where中不能使用聚合函數(shù)?
理由很簡單,聚合函數(shù)是對列進行操作的,而where是對行數(shù)據(jù)進行篩選的,所以不能在where中不能使用聚合函數(shù),但是在having中是可以使用的。
為什么呢?你可以評論區(qū)留言說說你的看法。
SQL2 查找入職員工時間排名倒數(shù)第三的員工所有信息

我的思路: 先取出入倒數(shù)第三的hire_date(員工入職日期),然后取出對應(yīng)hire_date(員工入職日期)的數(shù)據(jù)行即可。
我的題解:
select *
from employees
where hire_date = (
select hire_date
from employees
group by hire_date
order by hire_date desc
limit 2,1
);
涉及知識點:
子查詢(嵌套查詢) 子查詢sql執(zhí)行順序:from-group by-select-order by-limit,補充完整sql執(zhí)行順序:
from -> where -> group by -> having -> select -> order by -> limit
排序:order by 字段名稱 desc/asc (desc 降序,asc 升序) 從指定位置開始取出指定行:limit m,n
提交結(jié)果:
其他題解學(xué)習(xí):
思路: 首先按hire_date進行降序排序,然后直接利用row_number()函數(shù)給數(shù)據(jù)進行標(biāo)號,取出標(biāo)號為3的那條數(shù)據(jù)即可。
select emp_no, birth_date, first_name, last_name, gender, hire_date
from (
select *, row_number() over (order by hire_date desc) as rownum
from employees
) a1
where rownum = 3;
另外還有幾個新增知識點:
row_number() over (partition by col1 order by col2) 表示按col1進行分區(qū),然后每個區(qū)塊內(nèi)按col2進行升序排序,并給對應(yīng)的區(qū)塊內(nèi)編號(也可以不寫分區(qū),就整個數(shù)據(jù)集為一個分區(qū));
理論上來說如果有相同入職時間的人,這種方法就不科學(xué)了。
題目地址:https://www.nowcoder.com/ta/sql
--END--
掃碼即可加我微信
觀看朋友圈,獲取最新學(xué)習(xí)資源
學(xué)習(xí)更多: 整理了我開始分享學(xué)習(xí)筆記到現(xiàn)在超過250篇優(yōu)質(zhì)文章,涵蓋數(shù)據(jù)分析、爬蟲、機器學(xué)習(xí)等方面,別再說不知道該從哪開始,實戰(zhàn)哪里找了 優(yōu)秀的讀者都知道,“點贊”傳統(tǒng)美德不能丟
評論
圖片
表情

