📢📢📢📣📣📣
哈嘍!大家好,我是【莫若心】,一位上進心十足的【大資料領域博主】!😜😜😜
擅長主流資料Oracle、MySQL、PG 運維開發
? 如果有對【資料庫】感興趣的【小可愛】,歡迎關注💞💞💞
??????感謝各位大可愛小可愛!??????

文章目錄
- 🐴 1.SQL題目概述
- 🐴 2.解題思路
- 🐴 3.方法實作
- 🌈3.1 Oracle實作
- 🌈3.2 MySQL實作
- 🐴 4.代碼測驗
- 🐴 5.知識點小結
- 🐴 6.如何成為SQL高手
🐴 1.SQL題目概述
LeetCode原題鏈接
表: Employee +--------------+---------+ | 列名 | 型別 | +--------------+---------+ | id | int | | name | varchar | | salary | int | | departmentId | int | +--------------+---------+ id是此表的主鍵列, departmentId是Department表中ID的外鍵, 此表的每一行都表示員工的ID、姓名和工資,它還包含他們所在部門的ID, 表: Department +-------------+---------+ | 列名 | 型別 | +-------------+---------+ | id | int | | name | varchar | +-------------+---------+ id是此表的主鍵列, 此表的每一行都表示一個部門的ID及其名稱,
🚀題目:
撰寫SQL查詢以查找每個部門中薪資最高的員工,
按 任意順序 回傳結果表,
查詢結果格式如下例所示,輸入: Employee 表: +----+-------+--------+--------------+ | id | name | salary | departmentId | +----+-------+--------+--------------+ | 1 | Joe | 70000 | 1 | | 2 | Jim | 90000 | 1 | | 3 | Henry | 80000 | 2 | | 4 | Sam | 60000 | 2 | | 5 | Max | 90000 | 1 | +----+-------+--------+--------------+ Department 表: +----+-------+ | id | name | +----+-------+ | 1 | IT | | 2 | Sales | +----+-------+ 輸出: +------------+----------+--------+ | Department | Employee | Salary | +------------+----------+--------+ | IT | Jim | 90000 | | Sales | Henry | 80000 | | IT | Max | 90000 | +------------+----------+--------+ 解釋:Max 和 Jim 在 IT 部門的工資都是最高的,Henry 在銷售部的工資最高,
🐴 2.解題思路
這個題中Employee和Department 存在主外鍵的關系,所以直接用內連接即可
因為工資的最高存在多個,所以可以考慮用group by 分組或者排序的方式
🐴 3.方法實作
🌈3.1 Oracle實作
m.Department as “Department”,
m.Employee as “Employee”,
m.Salary as “Salary”
from
(
SELECT b.name AS “DEPARTMENT”,
a.name AS “EMPLOYEE”,
a.Salary,
DENSE_RANK() OVER(partition by a.departmentId ORDER BY a.salary desc) rank
FROM Employee a,Department b
where a.departmentId = b.id
) m where rank = 1
🌈3.2 MySQL實作
select
m.Department,
m.Employee,
m.Salary
from (
SELECT b.name AS “Department”,
a.name AS “Employee”,
a.Salary,
DENSE_RANK() OVER w AS “rank”
FROM Employee a,Department b
where a.departmentId = b.id
WINDOW w AS (partition by a.departmentId ORDER BY a.salary desc)
) m where m.rank=1;
🐴 4.代碼測驗
🌈 Oracle執行代碼,開始測驗
與測驗結果一致,測驗成功!
🌈 MySQL執行代碼,開始測驗
與測驗結果一致,測驗成功!
🐴 5.知識點小結
MySQL8.0 中可以利用 DENSE_RANK()視窗函式實作并列的排序
🐴 6.如何成為SQL高手
學習IT邦德老師的專欄
https://blog.csdn.net/weixin_41645135/category_11653817.html

大家點贊、收藏、關注、評論啦 👇🏻👇🏻👇🏻
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/438089.html
標籤:其他






