首页 > 其他分享 >1077. 项目员工 III

1077. 项目员工 III

时间:2024-10-20 16:20:08浏览次数:11  
标签:Project 1077 员工 project Employee employee years III id

力扣题目跳转(1077. 项目员工 III - 力扣(LeetCode)

项目表 Project

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| project_id  | int     |
| employee_id | int     |
+-------------+---------+
(project_id, employee_id) 是这个表的主键(具有唯一值的列的组合)
employee_id 是员工表 Employee 的外键(reference 列)
该表的每一行都表明具有 employee_id 的雇员正在处理具有 project_id 的项目。

员工表 Employee

+------------------+---------+
| Column Name      | Type    |
+------------------+---------+
| employee_id      | int     |
| name             | varchar |
| experience_years | int     |
+------------------+---------+
employee_id 是这个表的主键(具有唯一值的列)
该表的每一行都包含一名雇员的信息。

 题目要求:

编写解决方案,报告在每一个项目中 经验最丰富 的雇员是谁。如果出现经验年数相同的情况,请报告所有具有最大经验年数的员工。

返回结果表 无顺序要求 。

结果格式如下示例所示。

示例 1:

输入:
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                |
+-------------+--------+------------------+
输出:
+-------------+---------------+
| project_id  | employee_id   |
+-------------+---------------+
| 1           | 1             |
| 1           | 3             |
| 2           | 1             |
+-------------+---------------+
解释:employee_id 为 1 和 3 的员工在 project_id 为 1 的项目中拥有最丰富的经验。在 project_id 为 2 的项目中,employee_id 为 1 的员工拥有最丰富的经验。

case 1 的建表语句。

Create table If Not Exists Project (project_id int, employee_id int)

Create table If Not Exists Employee (employee_id int, name varchar(10), experience_years int)

Truncate table Project

insert into Project (project_id, employee_id) values ('1', '1')

insert into Project (project_id, employee_id) values ('1', '2')

insert into Project (project_id, employee_id) values ('1', '3')

insert into Project (project_id, employee_id) values ('2', '1')

insert into Project (project_id, employee_id) values ('2', '4')

Truncate table Employee

insert into Employee (employee_id, name, experience_years) values ('1', 'Khaled', '3')

insert into Employee (employee_id, name, experience_years) values ('2', 'Ali', '2')

insert into Employee (employee_id, name, experience_years) values ('3', 'John', '3')

insert into Employee (employee_id, name, experience_years) values ('4', 'Doe', '2')

一     首先我们对两张表进行左连接,主表为 project 连接关键字是 p.employee_id = e.employee_id

select
    *
from Project p
left join Employee e on p.employee_id = e.employee_id;

输出如下

二    我们在基础上使用窗口函数增加一列作为判别不同项目中年龄最大的员工的依据。题目要求是需要并列。

select
    *,
    dense_rank() over (partition by project_id order by experience_years desc) as rn
from Project p
left join Employee e on p.employee_id = e.employee_id;

输出如下

三    那么我们在基础就进行数据删选继续了。我使用的是 CTE 表达式。因为表内的两个 employee _id 没有进行判别,所以后面需要打出来。

with tmp as
(select
    project_id,
    p.employee_id,
    name,
    experience_years,
    dense_rank() over (partition by project_id order by experience_years desc) as rn
from Project p
left join Employee e on p.employee_id = e.employee_id)
select project_id,employee_id from tmp where rn = 1;

输出如下

以上就是全部答案,如果对你有帮助请点个赞,谢谢。

来源:力扣(leecode

著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 转载请注明出处:

1077. 项目员工 III-CSDN博客文章浏览阅读121次。employee_id 为 1 和 3 的员工在 project_id 为 1 的项目中拥有最丰富的经验。在 project_id 为 2 的项目中,employee_id 为 1 的员工拥有最丰富的经验。该表的每一行都表明具有 employee_id 的雇员正在处理具有 project_id 的项目。employee_id 是这个表的主键(具有唯一值的列)该表的每一行都包含一名雇员的信息。https://blog.csdn.net/CYJ1844/article/details/143083814

我会尽快把力扣上的所有数据库题目发出来。感兴趣的可以点个赞与关注。每天不定时跟新。

标签:Project,1077,员工,project,Employee,employee,years,III,id
From: https://blog.csdn.net/CYJ1844/article/details/143083814

相关文章

  • P5048 [Ynoi2019 模拟赛] Yuno loves sqrt technology III
    Sol蒲公英题意基本相同,但是注意到空间限制62.5MB,显然不能用蒲公英的做法。考虑先把整块的答案算出来,然后把小块的部分补上去,显然大块可以预处理,小块可以直接暴力查询是否越界。代码很简单。Code#include<iostream>#include<iomanip>#include<cstdio>#include<vector>......
  • 【做题记录】ds合集 Part III
    ds合集的Part3,此合集包含贪心问题。贪心问题CF30E题目链接考虑对一个\(a'\)找到其对于的\(a\),肯定是越前越优,那么拿\(S\)的反串做个kmp即可得到每个\(a\)的第一次出现位置。然后就是在区间中找最长的奇回文串,manacher预处理,然后二分半径\(len\),看看\([l+len-1,......
  • 6款适合多屏幕管理的电脑监控软件,员工电脑怎么监控
    在现代办公环境中,多屏幕已成为提高工作效率的重要工具。为了有效管理多屏幕环境中的工作活动,选择合适的电脑监控软件显得尤为重要。以下是6款适合多屏幕管理的电脑监控软件,帮助企业更好地监控和管理员工的工作情况。1.固信软件固信监控软件是一款专为企业设计的综合性电脑监......
  • leecode 数据库: 579. 查询员工的累计薪水
    表:Employee+-------------+------+|ColumnName|Type|+-------------+------+|id|int||month|int||salary|int|+-------------+------+(id,month)是该表的主键(具有唯一值的列的组合)。表中的每一行表示2020年期间员工......
  • 代码随想录算法训练营 | 121.买卖股票的最佳时机,122.买卖股票的最佳时机II,123.买卖股
    121.买卖股票的最佳时机题目链接:121.买卖股票的最佳时机文档讲解︰代码随想录(programmercarl.com)视频讲解︰买卖股票的最佳时机日期:2024-10-14想法:经常有用0和1表示相反状态,dp[i][0]表示第i天持有股票时身上最多的钱,比如第一天股票5元,持有了,身上的钱就为dp[0][0]=-5,第二天股......
  • leecode 数据库: 534. 游戏玩法分析 III
    表:Activity+--------------+---------+|ColumnName|Type|+--------------+---------+|player_id|int||device_id|int||event_date|date||games_played|int|+--------------+---------+(player_id,event_date)是此表的......
  • 基于Node.js+vue公司员工管理系统的设计与实现(开题+程序+论文) 计算机毕业设计
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容研究背景随着企业规模的扩大和业务的复杂化,公司员工管理成为了企业管理中的一项重要任务。传统的人工管理方式不仅效率低下,而且容易出错,无法满足现代企业对员工管理......
  • 085基于java ssm springboot基于协同过滤算法的煤矿员工体检健康管理系统体检套餐预约
    项目技术:Springboot+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.IDE环境:IDEA,Eclipse,Myeclipse都可以。推荐IDEA;3.tomcat环境:Tomcat7.x,8.x,9.x版本均可4.硬件环境:windows......
  • 代码随想录算法训练营 | 198.打家劫舍,213.打家劫舍II,337.打家劫舍III
    198.打家劫舍题目链接:198.打家劫舍文档讲解︰代码随想录(programmercarl.com)视频讲解︰打家劫舍日期:2024-10-13想法:dp[i]到第i个房子时能偷的最多的钱;递推公式:是上上一栋房子的dp[i-2]加上这栋房子的钱nums[i]大还是上一家邻居偷的钱dp[i-1]的大;初始化因为有i-2;所以初始化......
  • 基于django+vue+Vue皓缘服装厂员工管理系统【开题报告+程序+论文】-计算机毕设
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着服装行业的快速发展,企业管理面临越来越多的挑战,尤其是人力资源管理方面。皓缘服装厂作为一家具有一定规模的服装制造企业,在日常运营中......