SQL解惑 - 谜题2
文章目录
- 一、谜题描述
- 二、分析
- 三、答案
- 四、总结
一、谜题描述
创建一个记录雇员缺勤率的数据库。使用的表结构如下:Absenteeism
主键:PRIMARY KEY (emp_id, absent_date)
| 字段名 | 字段类型 | 字段中文名 | 字段描述 |
|---|---|---|---|
| emp_id | INTERGER | 雇员id | - |
| absent_date | STRING | 缺勤日期 | - |
| reason_code | STRING | 缺勤原因 | - |
| severity_points | INTEGER | 严重性计分 | 对缺勤行为进行处罚性计分 |
如果雇员在一年的时间内严重性计分累计达到40,就自动将该雇员解雇。如果雇员连续缺勤超过一天,就视为长病假,而不是普通的缺勤。这时第二天、第三天和以后的日子中都不会统计该股元的严重性分数,这些天也不算做缺勤。
二、分析
步骤1:将雇员连续缺勤记录的严重性计分置为0;
步骤2:找出一年内严重性计分累计达到40的雇员;
需要用到的关联表:
雇员表:Personnel
| 字段名 | 字段类型 | 字段中文名 | 字段描述 |
|---|---|---|---|
| emp_id | INTERGER | 雇员id | 雇员唯一标识 |
| emp_name | STRING | 雇员名字 | - |
日期维度表:Calendar
| 字段名 | 字段类型 | 字段中文名 | 字段描述 |
|---|---|---|---|
| date | STRING | 日期 | 唯一键 |
| date_type | STRING | 日期类型 | eg:工作日/周末 |
三、答案
SparkSQL语法
SQL1:将雇员连续缺勤达到一天的记录的严重性计分置为0;
思路:按雇员分组,按日期排序,得到rn;用日期减rn;用开窗的方式代替group by 减少表自身关联次数。
select emp_id,absent_date,reason_code,if(absent_cnt > 1,0,severity_points) as severity_points
from
(select emp_id,absent_date,reason_code,severity_points,tag_date,sum(1)over(partition by emp_id,date_add(absent_date,-rn)) as absent_cntfrom (select emp_id,absent_date,reason_code,severity_points,row_number()over(partition by emp_id order by absent_date) as rnfrom Absenteeism) in1
) t1
SQL2:找出一年内严重性计分累计达到40的雇员;
select t1.emp_id,sum(t1.severity_points)
from t1
left join Calendar t2
where t2.date_type = 'work'
and t1.absent_date between date_add(CURRENT_DATE,-365) and CURRENT_DATE
group by t1.emp_id
having sum(t1.severity_points) >= 40
四、总结
处理连续问题
标准步骤:
(1)按雇员分组,按日期排序,得到rn
(2)用日期减rn
相关文章:
SQL解惑 - 谜题2
文章目录 一、谜题描述二、分析三、答案四、总结 一、谜题描述 创建一个记录雇员缺勤率的数据库。使用的表结构如下:Absenteeism 主键:PRIMARY KEY (emp_id, absent_date) 字段名字段类型字段中文名字段描述emp_idINTERGER雇员id-absent_dateSTRING缺勤…...
FWT+高维前缀和:Gym - 103202M
https://vj.imken.moe/contest/597216#problem/F 考虑两个人的集合分别为 i , j i,j i,j,那么我们令 f ( i ⊗ j ) f(i\otimes j) f(i⊗j),其中 f ( s ) f(s) f(s) 表示两个人不同集合恰好为 s s s,显然 f ( s ) f(s) f(s) 可以FWT求…...
【C++】string类的接口综合运用
目录 介绍: 一,string对象的构建 二,string类对象的容量操作 介绍: string容器我们之前已经粗略了解了基本增添、修改、删除、插入等基本功能,这里就不再做过多说明,接下来我们全面并详细…...
分布式ID生成框架Leaf升级踩坑
背景: 在项目中需要一个统一的拿单号等唯一ID的服务,就想起了之前用到的leaf,但是因为项目要求,leaf的版本不符合,需要做一些升级 项目地址:https://github.com/Meituan-Dianping/Leaf 升级点࿱…...
常用的设计模式
文章目录 常用的设计模式:一、单例模式3、懒汉式 - 懒汉式非线程安全4、饿汉式 - 线程安全5、懒汉式和饿汉式区别6、双重检查锁定7、应用场景 二、工厂模式1、简单工厂模式2、工厂模式3、抽象工厂4、总结 三、代理模式1、静态代理2、动态代理jdk自带动态代理 3、Cgl…...
git的相关实用命令
参看文章:https://blog.csdn.net/qq_21688871/article/details/130158888 http://www.mobiletrain.org/about/BBS/159885.html 1、git commit后,但发现文件有误,不想push(提交到本地库,回退到暂存区) git reset --sof…...
【使用`model.status`来获取gurobi求解过程中的模型状态】
在Gurobi中,你可以使用model.status来获取求解过程中的模型状态。可以使用了model.status来检查模型是否找到最优解。模型状态是一个Gurobi的常量,表示了求解过程中的不同状态。 以下是一些常见的模型状态: GRB.OPTIMAL: 最优解被找到。GRB…...
【UGUI】Unity教程:实现物品的拖拽功能
大家好,今天,我们将一起学习如何在Unity中实现物品的拖拽功能。这是一个非常实用的技能,无论你是在制作RPG游戏的背包系统,还是在制作策略游戏的建筑放置功能,都会用到这个技能。那么,让我们开始吧…...
【奇淫技巧】两数交换
【奇淫技巧】两数交换 临时变量法:借助中间变量加减法:不使用中间变量异或法:不使用中间变量语法糖:某些编程语言支持交换语法糖借助函数,不交换 前提:待交换的两个元素,分别用a,b表示…...
Java核心知识点整理大全26-笔记
目录 27. Storm 7.1.1. 概念 27.1.1. 集群架构 27.1.1.1. Nimbus(master-代码分发给 Supervisor) 27.1.1.2. Supervisor(slave-管理 Worker 进程的启动和终止) 27.1.1.3. Worker(具体处理组件逻辑的进程ÿ…...
“上云”还是“下云”?探云计算的下一站未来!
引言 10 月 27 日,X(原Twitter)工程技术发布帖子称,在过去的一年里,技术团队优化了 X 的云服务使用方式,着手将更多工作负载迁往本地基础设施。这一转变使 X 每月的云成本降低了 60%。所有媒体、Blob 存储均…...
Linux中top命令输出日志分析?
以下是对输出的各部分的解释: 09:54:34:系统当前时间。up 161 days, 2:08:系统已经运行了161天2小时8分钟。5 users:有5个用户登录系统。load average: 0.13, 0.08, 0.05:系统的1分钟、5分钟、15分钟的平均负载。负载…...
执行栈和执行上下文
前端面试大全JavaScript执行栈和执行上下文 🌟经典真题 🌟执行上下文 🌟栈数据结构 🌟执行上下文生命周期 🌟真题解答 🌟总结 🌟经典真题 谈谈你对 JavaScript 执行上下文栈理解 &#…...
7、单片机与W25Q128(FLASH)的通讯(SPI)实验(STM32F407)
SPI接口简介 SPI 是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。 SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根…...
stream流和方法引用
1.Stream流 1.1体验Stream流【理解】 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合,存储多个字符串元素把集合中所有以"张"开头的元素存储到一个新的集合把"张"开头的集合中的长度为3的元素存储到一个新的集合遍历上一步得到的集…...
Redis——某马点评day01——短信登录
项目介绍 导入黑马点评项目 项目架构 基于Session实现登录 基本流程 实现发送短信验证码功能 controller层中 /*** 发送手机验证码*/PostMapping("code")public Result sendCode(RequestParam("phone") String phone, HttpSession session) {// 发送短信…...
AES加密技术:原理与应用
一、引言 随着信息技术的飞速发展,数据安全已成为越来越受到重视的领域。加密技术作为保障数据安全的重要手段,在信息安全领域发挥着举足轻重的作用。AES(Advanced Encryption Standard)作为一种对称加密算法,自1990年…...
Unity中PlayerPrefs在PC上存储位置总结
编辑器下和EXE存储位置是不同的,这也不难理解,是为了避免存储位置相同导致开发和测试冲突。 编辑器下位置:HKEY_CURRENT_USER\Software\Unity\UnityEditor\ExampleCompanyName\ExampleProductName EXE位置:HKEY_CURRENT_USER\Sof…...
消融实验:深度学习的关键分析工具
消融实验:深度学习的关键分析工具 在深度学习和机器学习领域,消融实验(Ablation Study)是一种重要的实验方法,用于理解和评估模型的各个组成部分对其整体性能的贡献。通过这种方法,研究人员可以更深入地了…...
Redis缓存——Spring Cache入门学习
Spring Cache 介绍 Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。 Spring Cache 提供了一层抽象,底层可以切换不同的缓存实现,例如: EHCacheCaffeineR…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...
SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...
嵌入式学习笔记DAY33(网络编程——TCP)
一、网络架构 C/S (client/server 客户端/服务器):由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序,负责提供用户界面和交互逻辑 ,接收用户输入,向服务器发送请求,并展示服务…...
nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...
c# 局部函数 定义、功能与示例
C# 局部函数:定义、功能与示例 1. 定义与功能 局部函数(Local Function)是嵌套在另一个方法内部的私有方法,仅在包含它的方法内可见。 • 作用:封装仅用于当前方法的逻辑,避免污染类作用域,提升…...
对象回调初步研究
_OBJECT_TYPE结构分析 在介绍什么是对象回调前,首先要熟悉下结构 以我们上篇线程回调介绍过的导出的PsProcessType 结构为例,用_OBJECT_TYPE这个结构来解析它,0x80处就是今天要介绍的回调链表,但是先不着急,先把目光…...
