sql 取重复key中的第一条_SQL每日一题
寫在前面
SQL每日一題是用牛客網的sqlite庫的題目進行深度講解(感覺進度慢的小伙伴可以自行前往刷題),這個系列要開啟日更計劃,每日一題,一起進步學習。
題目描述
查找最晚入職員工的所有信息,為了減輕入門難度,目前所有的數據里員工入職的日期都不是同一天
這個題目所用到的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:降序排列取top1
思路2:子查詢限定max
思路1有局限性,但這道題用思路1也可以通過,下面詳細說說
答案:
# 思路1select?*?上面的代碼思路是用limit限定對hire_date降序排列后取第一行,假如沒有重復的hire_date的話,那么取出來的就是最晚入職的員工信息,當然這樣寫也能通過調試,因為這道題里明確說明了“員工入職日期都不是同一天”。
limit n 表示從第1條開始(第一條數據所在的行為0),取n條數據limit m,n 表示從m+1條開始(行m),取n條數據,如limit 1,1 表示從第2條數據開始,取1條,搭配order by使用效果更佳。所以在本題里,除了limit 1這種寫法外,還可以寫成limit 0,1
但實際案例中確實會存在同一天的情況,那又應該如何做呢?
如上圖所示是我隨便插入的3條數據,可以看到emp_no為10008和10009的hire_date相同且最晚。# 思路2select?*?如上代碼,這里用到了子查詢,思路是:
1、先用max函數取出最大的hire_date
2、再用where子句限定,hire_date等于剛取出來的最大的hire_date
最后取出的結果如圖:
相關內容:
學習SQL:MySQL必知必會
對比Excel學習SQL(6):表連接
對比Excel學習SQL(5):分組和子查詢
對比Excel學習SQL(4):計算字段
寫給小白的SQL學習文章
猜你喜歡:
如何處理偏態數據?
數據分析應關注AARRR模型的哪些指標
泰坦尼克號數據分析
深入淺出數據分析
數據分析都有哪些崗位?
Python實現LRFM模型分析客戶價值
為什么要學統計學:赤裸裸的統計學
@ 作者:可樂
@ 公眾號/知乎專欄/頭條/簡書:可樂的數據分析之路
@加個人微信:data_cola,備注:進群,拉你入 可樂的數據分析群 和各行各業的小伙伴交流探討數據分析相關內容
總結
以上是生活随笔為你收集整理的sql 取重复key中的第一条_SQL每日一题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1333和1600能双通道吗_80后童年
- 下一篇: python初学火车座位判断_Pytho