当前位置: 首页 > news >正文

力扣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
http://www.cnnetsun.cn/news/53022.html

相关文章:

  • Flutter 测试全栈指南:从单元测试到黄金路径验证的工程化实践
  • EtherCAT 逐帧报文解析:配置SM/FMMU
  • Springboot连锁火锅店餐饮管理系统h2dg0(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • Windows系统文件wavemsp.dll丢失或损坏的问题 下载修复
  • Windows系统文件wdi.dll缺失或损坏问题 下载修复
  • 基于风险演进的智能测试策略设计
  • 论文查重焦虑成流量密码?虎贲等考 AI 直接用免费模式,打破行业游戏规则
  • vue基于Spring Boot的高职院校贫困生困难生智慧关爱系统的开发_f0txl8vu
  • AI 写论文哪家强?虎贲等考 AI!毕业论文全链路 “超级哇塞”,开题到答辩一路开挂~
  • Coze平台指南(1):coze平台概览与测试应用展望
  • 生物识别系统的测试安全性与漏洞防护实践
  • 我终于停止写 JUnit 了!用 JavaParser + GPT-4 自动生成 90% 覆盖率的单元测试
  • 源码读不下去?阿里架构师教你“三步走”阅读法,彻底告别“打开源码就犯困”
  • 大梵公考:国考省考每一年的岗位一样吗?
  • 大梵公考:国考和省考二选一怎么选?
  • Java中如何检测死锁?如何预防和避免线程死锁?
  • Day32 类的定义和方法
  • 自动化测试-关键数据记录(日志+截图+页面源码)
  • IPv4地址与IPv6地址
  • 探索非线性电液伺服系统:从PID到反步控制的奇妙之旅
  • 使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 33--基础知识 8--切换窗口句柄
  • 某安全so库深度解析
  • vue基于Spring Boot框架的在线电影票购买系统的设计与实现_8xxt52nn
  • 在服务器上安装 aaPanel
  • Week 29: 深度学习补遗:MoE的稳定性机制与路由策略实现
  • 25年12月14日复盘总结,大盘方向,操作建议,板块机会,实用干货
  • what?动态规划?
  • CommonJS 的缓存机制:为什么二次 require 得到的对象是同一个?
  • 跨标签页通信的五种方案:LocalStorage、BroadcastChannel 与 SharedWorker
  • JavaScript 与 CSS 变量交互:利用 setProperty 动态修改 CSS 变量实现主题切换