news 2026/6/23 17:20:23

力扣1965-丢失信息的雇员

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
力扣1965-丢失信息的雇员

表:Employees

+-------------+---------+ | Column Name | Type | +-------------+---------+ | employee_id | int | | name | varchar | +-------------+---------+ employee_id 是该表中具有唯一值的列。 每一行表示雇员的 id 和他的姓名。

表:Salaries

+-------------+---------+ | Column Name | Type | +-------------+---------+ | employee_id | int | | salary | int | +-------------+---------+ employee_id 是该表中具有唯一值的列。 每一行表示雇员的 id 和他的薪水。

编写解决方案,找到所有丢失信息的雇员 id。当满足下面一个条件时,就被认为是雇员的信息丢失:

  • 雇员的姓名丢失了,或者
  • 雇员的薪水信息丢失了

返回这些雇员的 idemployee_id从小到大排序

查询结果格式如下面的例子所示。

示例 1:

输入:Employees table: +-------------+----------+ | employee_id | name | +-------------+----------+ | 2 | Crew | | 4 | Haven | | 5 | Kristian | +-------------+----------+ Salaries table: +-------------+--------+ | employee_id | salary | +-------------+--------+ | 5 | 76071 | | 1 | 22517 | | 4 | 63539 | +-------------+--------+输出:+-------------+ | employee_id | +-------------+ | 1 | | 2 | +-------------+解释:雇员 1,2,4,5 都在这个公司工作。 1 号雇员的姓名丢失了。 2 号雇员的薪水信息丢失了。

思路:

本题涉及 Employees 表和 Salaries 表,两张表都以 employee_id 作为员工的唯一标识。题目要求找出员工信息不完整的员工编号,即员工只存在于其中一张表中,而在另一张表中缺少对应信息的情况。

解题时,首先需要同时保留两张表中的全部员工记录,因此采用全外连接的方式,将 Employees 表和 Salaries 表按照 employee_id 进行关联。全外连接可以保证即使某个 employee_id 只存在于其中一张表中,也不会被过滤掉,而是以 NULL 的形式展示另一张表中缺失的字段。

在完成全外连接后,通过判断字段是否为 NULL 来识别信息缺失的员工。如果 Employees 表中的 name 字段为 NULL,说明该 employee_id 在员工表中不存在;如果 Salaries 表中的 salary 字段为 NULL,说明该 employee_id 在薪资表中不存在。只要满足上述任意一种情况,就说明该员工的信息是不完整的,需要被筛选出来。

由于全外连接后,同一行中可能只有一张表的 employee_id 有值,另一张表的 employee_id 为 NULL,因此在最终输出时,需要对两个 employee_id 字段进行合并,取非空的那个作为最终的员工编号,从而保证每条记录都能正确返回 employee_id。

最后,根据题目要求,对查询结果按照 employee_id 进行升序排序,得到最终结果集。

/* Write your PL/SQL query statement below */ select nvl(e.employee_id,s.employee_id) employee_id from Employees e FULL OUTER JOIN Salaries s on e.employee_id = s.employee_id where (e.name is null or s.salary is null) order by employee_id
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/23 16:46:55

Flutter 测试全栈指南:从单元测试到黄金路径验证的工程化实践

引言:为什么你的 Flutter 项目不敢重构?在敏捷开发时代,没有测试覆盖的代码就是技术债务。然而,许多 Flutter 团队仍停留在“手动点测”阶段,导致:修复一个 Bug 引入三个新 Bug;重构时如履薄冰&…

作者头像 李华
网站建设 2026/6/23 17:08:35

EtherCAT 逐帧报文解析:配置SM/FMMU

1、APWR 写 0x10 寄存器:设定从站地址发:回:2、APRD读0x130:读取AL状态发:回:3、FPWR 写 0x910、0x990、0x981、0x930、0x934 寄存器:清空DC配置发:回:4、APWR 写 0x120 …

作者头像 李华
网站建设 2026/6/22 20:12:59

Springboot连锁火锅店餐饮管理系统h2dg0(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表项目功能:用户,商家,菜品分类,菜品信息,在线留言,公告信息开题报告内容基于SpringBoot的连锁火锅店餐饮管理系统开题报告一、研究背景与意义随着餐饮行业数字化转型加速,连锁火锅店作为高频消费场景,面临管理效率低、顾客体验…

作者头像 李华
网站建设 2026/6/22 14:17:28

Windows系统文件wavemsp.dll丢失或损坏的问题 下载修复

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/6/22 19:18:08

Windows系统文件wdi.dll缺失或损坏问题 下载修复

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/6/21 5:41:48

基于风险演进的智能测试策略设计

风险演进背景下的测试新挑战 随着数字化转型加速,软件系统从单体架构向微服务、云原生演进,测试风险不再局限于代码缺陷,而是扩展到安全漏洞、性能瓶颈、兼容性问题及业务连续性等多维度。风险演进的本质在于其动态性:在开发周期…

作者头像 李华