Datawhale-MySQL-任務五
資料匯入匯出
將Excel檔案匯入MySQL表
- 首先根據我們需要的欄位在MySQL中建立出表employees
- 在視覺化介面Navicat for MySQL中操作,滑鼠右鍵點選我們建立的表,選擇匯入嚮導,在彈窗中選擇Excel檔案,點選下一步。
- 之後選擇我們需要匯入的Excel檔案,點選下一步繼續
- 這邊目標表選擇你想要匯入到的表即可
- 欄位對應關係由於我們就是根據需求對應建立的,所以不用更改,當然有些時候需要自己選擇一下,之後預設下一步直到完成即可。
- 開啟MySQL中的employees表我們發現Excel中資料成功匯入
MySQL匯出表到Excel檔案
- 使用Navicat for MySQL從MySQL匯出表到Excel檔案操作和將Excel資料匯入到MySQL操作大同小異。操作步驟更少
- 選擇匯出嚮導在這裡選擇需要匯出的表後需要給你要匯出的檔案命名並選擇儲存的地址,之後預設下一步後點選開始即開始匯出。
- 操作完成後即可以在你儲存的地方找到匯出後的檔案
作業
專案七:各部門工資最高的員工(難度:中等)
建立Employee 表,包含所有員工資訊,每個員工有其對應的 Id, salary 和 department Id。
Id | Name | Salary | DepartmentId |
---|---|---|---|
1 | Joe | 70000 | 1 |
2 | Henry | 80000 | 2 |
3 | Sam | 60000 | 2 |
4 | Max | 90000 | 1 |
建立Department 表,包含公司所有部門的資訊。
Id | Name |
---|---|
1 | IT |
2 | Sales |
編寫一個 SQL 查詢,找出每個部門工資最高的員工。例如,根據上述給定的表格,Max 在 IT 部門有最高工資,Henry 在 Sales 部門有最高工資。
Department | Employee | Salary |
---|---|---|
IT | Max | 90000 |
Sales | Henry | 80000 |
作業解答:
SELECT d.`Name` AS Department,e.`Name` AS Employee,e.Salary AS Salary
FROM Employee e, Department d
WHERE e.DepartmentId = d.id
AND e.Salary = (
SELECT MAX(Salary) FROM Employee
WHERE DepartmentId = d.id)
結果顯示:
專案八: 換座位(難度:中等)
小美是一所中學的資訊科技老師,她有一張 seat 座位表,平時用來儲存學生名字和與他們相對應的座位 id。
其中縱列的 id 是連續遞增的
小美想改變相鄰倆學生的座位。
你能不能幫她寫一個 SQL query 來輸出小美想要的結果呢?
請建立如下所示seat表:
示例:
id | student |
---|---|
1 | Abbot |
2 | Doris |
3 | Emerson |
4 | Green |
5 | Jeames |
假如資料輸入的是上表,則輸出結果如下:
id | student |
---|---|
1 | Doris |
2 | Abbot |
3 | Green |
4 | Emerson |
5 | Jeames |
注意:
如果學生人數是奇數,則不需要改變最後一個同學的座位。
作業解答:
SELECT s.id,s.student FROM(
SELECT id-1 AS id,student FROM seat WHERE MOD(id,2)= 0 -- 偶數id-1變成奇數
UNION
SELECT id+1 AS id,student FROM seat WHERE MOD(id,2)= 1 -- 奇數id+1變成偶數
AND id <> (SELECT count(*) FROM seat) -- 要注意如果最後是奇數id不變
UNION
SELECT id,student FROM seat WHERE MOD(id,2) = 1
AND id = (SELECT count(*) FROM seat)
) s
ORDER BY id;
結果:
專案九: 分數排名(難度:中等)
編寫一個 SQL 查詢來實現分數排名。如果兩個分數相同,則兩個分數排名(Rank)相同。請注意,平分後的下一個名次應該是下一個連續的整數值。換句話說,名次之間不應該有“間隔”。
建立以下score表:
Id | Score |
---|---|
1 | 3.50 |
2 | 3.65 |
3 | 4.00 |
4 | 3.85 |
5 | 4.00 |
6 | 3.65 |
例如,根據上述給定的 Scores 表,你的查詢應該返回(按分數從高到低排列):
Score | Rank |
---|---|
4.00 | 1 |
4.00 | 1 |
3.85 | 2 |
3.65 | 3 |
3.65 | 3 |
3.50 | 4 |
作業解答:
思路:對於任一分數,從score表中找出大於或等於該分數的不重複的分數,然後降序排列
SELECT Score,
(SELECT count(DISTINCT Score) FROM Score AS s2 WHERE s2.Score >= s1.Score) AS Rank
FROM Score AS s1
ORDER BY Score DESC;
執行結果:
相關文章
- Datawhale-MySQL-任務二MySql
- Datawhale-MySQL-任務三MySql
- Datawhale-MySQL-任務四(表聯結)MySql
- Datawhale-MySQL-任務六(複雜專案)MySql
- 實驗任務四:登入介面、實驗任務五:猜數字
- Statspack之五-規劃自動任務
- 第五項任務—給出設計類圖
- 任務佇列,巨集任務與微任務佇列
- 巨集任務和微任務
- JavaScript巨集任務和微任務JavaScript
- 任務
- Event Loop、 巨集任務和微任務OOP
- JavaScript的巨集任務與微任務JavaScript
- SpringBoot與非同步任務、定時任務、郵件任務Spring Boot非同步
- 資料探勘實踐(金融風控)-第五次任務
- 【基礎】新手任務,五分鐘全面掌握JQuery選擇器jQuery
- 微任務、巨集任務與Event-LoopOOP
- js中的巨集任務和微任務JS
- 任務系統之Jenkins子任務Jenkins
- macrotask 巨集任務 + microtask 微任務區別Mac
- 任務池
- 任務05
- crontab任務
- 任務四
- 近日任務
- 任務。1
- 任務1
- 任務4
- 任務一
- .Net Core 3.1瀏覽器後端服務(五) 引入定時任務Quartz.Net瀏覽器後端quartz
- 百度前端學院任務動態資料繫結(五)前端
- 第五週【任務1】範數懲罰正則化 (筆記)筆記
- UI 阻塞行為:微任務與宏任務UI
- laravel框架任務排程(定時執行任務)Laravel框架
- 微任務和巨集任務哪個先執行
- 同步任務與非同步任務執行順序非同步
- 專案任務與運維任務的衝突運維
- 快速開始api開發(五)定時任務 crontab 和 佇列 queueAPI佇列