部門工資最高的員工
這裡寫自定義目錄標題
Leecode經典的SQL
Leecode的題目。關於in的應用。感覺很經典,這裡列出解題過程。
題目描述
Employee 表包含所有員工資訊,每個員工有其對應的 Id, salary 和 department Id。
SQL如下:
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for employee
-- ----------------------------
DROP TABLE IF EXISTS `employee`;
CREATE TABLE `employee` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
`Salary` int(255) NULL DEFAULT NULL,
`DepartmentId` int(255) NULL DEFAULT NULL,
PRIMARY KEY (`Id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of employee
-- ----------------------------
INSERT INTO `employee` VALUES (1, 'Joe', 70000, 1);
INSERT INTO `employee` VALUES (2, 'Jim', 90000, 1);
INSERT INTO `employee` VALUES (3, 'Henry', 80000, 2);
INSERT INTO `employee` VALUES (4, 'Sam', 60000, 2);
INSERT INTO `employee` VALUES (5, 'Max', 90000, 1);
SET FOREIGN_KEY_CHECKS = 1;
Department 表包含公司所有部門的資訊。
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for department
-- ----------------------------
DROP TABLE IF EXISTS `department`;
CREATE TABLE `department` (
`Id` int(11) NOT NULL AUTO_INCREMENT,
`Name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
PRIMARY KEY (`Id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of department
-- ----------------------------
INSERT INTO `department` VALUES (1, 'IT');
INSERT INTO `department` VALUES (2, 'Sales');
SET FOREIGN_KEY_CHECKS = 1;
解題
方法:使用 JOIN 和 IN 語句
演算法
因為 Employee 表包含 Salary 和 DepartmentId 欄位,我們可以以此在部門內查詢最高工資。
SELECT
DepartmentId, MAX(Salary)
FROM
Employee
GROUP BY DepartmentId;
注意:有可能有多個員工同時擁有最高工資,所以最好在這個查詢中不包含僱員名字的資訊。
DepartmentId | MAX(Salary) |
---|---|
1 | 90000 |
2 | 80000 |
然後,我們可以把表 Employee 和 Department 連線,再在這張臨時表裡用 IN 語句查詢部門名字和工資的關係。
SELECT
Department.name AS 'Department',
Employee.name AS 'Employee',
Salary
FROM
Employee
JOIN
Department ON Employee.DepartmentId = Department.Id
WHERE
(Employee.DepartmentId , Salary) IN
( SELECT
DepartmentId, MAX(Salary)
FROM
Employee
GROUP BY DepartmentId
)
;
相關文章
- 185. 部門工資前三高的員工
- 案例(員工管理/部門管理)
- 模擬資料庫之部門員工資料庫
- mysql三表聯合查詢(員工表,部門表,工資表)MySql
- 員工自助服務門戶:HCM賦能員工提升
- 技術部員工績效考核方案
- 不讓資料隨員工走人:防止內部資訊洩露的策略
- 美國行政部門員工被要求披露加密貨幣持有情況加密
- HackerOne內部員工竊取漏洞報告
- 《英雄聯盟》Riot總部超過150名員工舉行罷工
- 啦啦啦啦員工工資合計程式碼
- 員工電腦資訊保安
- C語言學習記錄LeetCode——去掉最低工資和最高工資後的平均工資(排序)C語言LeetCode排序
- 員工不出力的原因
- 員工工作管理
- Teamblind:77.22%的特斯拉員工擔心裁員
- 用C++編寫一個簡單的員工工資管理系統~C++
- 詩悅網路總部大廈正式動工,打造員工幸福感新標杆
- 創新公司員工的資訊管理系統
- SoFi: 36%的美國員工希望以加密貨幣接收部分或全部工資加密
- 員工管理系統
- 員工工作沒精神
- 員工離職時
- 從狂熱玩家到公司員工,這是一些暴雪員工的故事
- 怎麼實現員工和工資大資料分析,echarts+js實現大資料EchartsJS
- 教育部:2021年新增37個本科專業 工學類佔比最高
- 阿里有三大奇怪的員工阿里
- 全球遊戲業幾乎都在降薪裁員 怎麼這家公司反而給員工漲工資?遊戲
- 如何避免員工洩密
- 阿里巴巴有一群全年無休從不領工資的高智商員工阿里
- 停止員工拖延症!工時管理系統的作用之一
- 10 僅需1步,獲取任意公司員工內部郵箱
- 工信部:將建2個公共工業雲平臺和1個工業大資料平臺大資料
- 授權店員:釋放員工的全部潛力
- 離職員工感人至深的話
- 第1001號員工的育碧往事(下)
- 第1001號員工的育碧往事(上)
- 推特的員工越來越多了?