日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

牛客网sql练习打卡

發布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 牛客网sql练习打卡 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

第一題

解題:?

1.使用表的子連接

2.使用降序取第一個

第二題

解題:

?1.降序取第三個

2.limit offset

3.子查詢



2021/10/8

今天第一次開始嘗試使用牛客網練習sql,大二在讀,已經有一些sql基礎,以后想在數據分析方向發展,開始打基礎,加油!

第一題

輸入: 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


?

自己想+看大佬們的答案

解題:?

1.使用表的子連接

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

where語句中嵌套一個select語句 使用max函數查詢最大的hire_date 從表中找出與此最大值相等的

2.使用降序取第一個

select * from employees order by hire_date desc limit 1;

這個方法有問題,如果最晚入職的不止一個人,這個就錯了

應該考慮的問題:
①最晚入職的當天未必就一個人,也許有多人,使用排序并限制得只能取得指定數量的結果

SELECT * FROM employees WHERE hire_date = (SELECT MAX(hire_date) FROM employees);

注:日期最大的就是最晚的,日期較早就是較小。

?來自 <練習SQL利器,牛客網SQL實戰題庫 - 知乎>

第二題

解題:

?1.降序取第三個

? ?

select * from employees order by hire_date desc limit 2,1;

這種方法不一定可行

limit 2,1 是指:(sql里面的行號是從0開始的)從第三條記錄開始取,取一條記錄。

2.limit offset

? ?

select * from employees order by hire_date desc limit 1 offset 2;

limit 1 offset 2:跳過2個從第三條記錄開始查詢1條記錄

當 limit和offset組合使用的時候,limit后面只能有一個參數,表示要取的的數量,offset表示要跳過的數量 。

3.子查詢

select * from employees where hire_date=(select distinct hire_date from employees order by hire_date desc limit 1 offset 2);

泛用性更強

select * from employees
where hire_date =
(select hire_date from employees
group by hire_date
order by hire_date desc
limit 1 offset 2);
補充:
若存在多人(如3人)同時在最晚的一天入職的情形,必須要考慮去重(使用distinct或者group by)
distinct和group by的執行順序都在limit前面

來自 <查找入職員工時間排名倒數第三的員工所有信息_牛客題霸_牛客網>

select * from employees where hire_date=(select distinct hire_date from employees order by hire_date desc limit 1 offset 2);

2021/10/10

停更,嗚嗚,我還是先打牢基礎再開始刷題吧。

今天開始學習《SQL基礎教程》,配合書籍和b站上的視頻一起學習!

總結

以上是生活随笔為你收集整理的牛客网sql练习打卡的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。