天天看點

LeetCode MySQL 1077. 項目員工 III

文章目錄

    • 1. 題目
    • 2. 解題

1. 題目

項目表 Project:

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| project_id  | int     |
| employee_id | int     |
+-------------+---------+
(project_id, employee_id) 是這個表的主鍵
employee_id 是員工表 Employee 的外鍵           

複制

員工表 Employee:

+------------------+---------+
| Column Name      | Type    |
+------------------+---------+
| employee_id      | int     |
| name             | varchar |
| experience_years | int     |
+------------------+---------+
employee_id 是這個表的主鍵           

複制

寫 一個 SQL 查詢語句,報告在每一個項目中經驗最豐富的雇員是誰。

如果出現經驗年數相同的情況,請報告所有具有最大經驗年數的員工。

查詢結果格式在以下示例中:

Project 表:
+-------------+-------------+
| project_id  | employee_id |
+-------------+-------------+
| 1           | 1           |
| 1           | 2           |
| 1           | 3           |
| 2           | 1           |
| 2           | 4           |
+-------------+-------------+

Employee 表:
+-------------+--------+------------------+
| employee_id | name   | experience_years |
+-------------+--------+------------------+
| 1           | Khaled | 3                |
| 2           | Ali    | 2                |
| 3           | John   | 3                |
| 4           | Doe    | 2                |
+-------------+--------+------------------+

Result 表:
+-------------+---------------+
| project_id  | employee_id   |
+-------------+---------------+
| 1           | 1             |
| 1           | 3             |
| 2           | 1             |
+-------------+---------------+
employee_id 為 1 和 3 的員工在 project_id 為 1 的項目中擁有最豐富的經驗。
在 project_id 為 2 的項目中,employee_id 為 1 的員工擁有最豐富的經驗。           

複制

來源:力扣(LeetCode)

連結:https://leetcode-cn.com/problems/project-employees-iii

著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

2. 解題

  • 先找出項目經驗最大的年數
  • 再where過濾
# Write your MySQL query statement below
select project_id,  employee_id
from Project left join Employee
using(employee_id)
where (project_id, experience_years) in
(
    select project_id, max(experience_years) exp_years
    from Project left join Employee
    using(employee_id)
    group by project_id
)           

複制

389 ms