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

Oracle 多条记录根据某个字段获取相邻两条数据间的间隔天数,小于31天的记录都筛选出来

需求描述:在Oracle中 住院记录记录表为v_hospitalRecords,表中FIHDATE入院时间,FBIHID是住院号, 我想查询出每个患者在他们的所有住院记录中是否在一个月内再次入院(相邻的两条记录进行比较),并且住院记录大于一的患者在此入院的数据

1、方法一

1.1 如下图所示:假如住院号为155131的患者入院记录有三条,该病人第一次入院为2023-05-19 15:19:00、第二次为2023-06-13 15:19:00、第三次为2023-07-16 15:19:00,那么我们排序下计算相邻两个是否在31天内,并且显示这两条记录,sql如下:

SELECT FBIHID, FIHDATE,prev_fihdate,next_fihdate 
FROM (SELECT FBIHID, FIHDATE,LAG(FIHDATE) OVER (PARTITION BY FBIHID ORDER BY FIHDATE ASC) AS prev_fihdate,LEAD(FIHDATE) OVER (PARTITION BY FBIHID ORDER BY FIHDATE ASC) AS next_fihdate,COUNT(*) OVER (PARTITION BY FBIHID) AS admissions_countFROM v_jc_mae_zy
)
WHERE (FIHDATE - prev_fihdate <= 31 OR next_fihdate - FIHDATE <= 31)
AND admissions_count > 1;

我们解释下这段sql,这段sql是查找在 31 天内住院两次或以上的患者。查询从名为 v_jc_mae_zy 的视图中选择了四个列:FBIHIDFIHDATEprev_fihdatenext_fihdate。其中,FBIHID 表示患者的 ID,FIHDATE 表示患者住院的日期,prev_fihdate 表示患者上一次住院日期,next_fihdate 表示患者下一次住院日期。

为了计算 prev_fihdatenext_fihdate,该查询使用了 LAGLEAD 窗口函数。LAG 函数用于返回在当前行之前的行中指定列的值,而 LEAD 函数用于返回在当前行之后的行中指定列的值。这里根据 FBIHID 分组,按 FIHDATE 升序排序,以得到每个患者的住院日期的前一次和下一次住院日期。

接下来,该查询使用 COUNT 窗口函数计算了每个患者的住院次数,将其命名为 admissions_count

最后,该查询使用条件筛选语句 WHERE,选择了满足以下条件的行:

  • 当前住院日期与上一次住院日期之差小于等于 31 天,或者当前住院日期与下一次住院日期之差小于等于 31 天。
  • 患者的住院次数大于 1。

如图所示:

2、方法二

2.1我们如1.1所说一致,采用另外一种方法,sql如下:

SELECT fbihid,fihdate, 上一个入院日期, 一个月后日期FROM (SELECT v.*,LAG(FIHDATE) OVER(PARTITION BY FBIHID ORDER BY FIHDATE) AS 上一个入院日期,LAG(FIHDATE) OVER(PARTITION BY FBIHID ORDER BY FIHDATE) + INTERVAL '31' DAY AS 一个月后日期,COUNT(*) OVER(PARTITION BY FBIHID) AS 住院次数FROM v_jc_mae_zy v) aWHERE 住院次数 > 1AND (一个月后日期 > fihdate or (上一个入院日期 is null or 一个月后日期 is null));

我们解释下这段sql,这段sql用于查找在 31 天内住院两次或以上的患者。查询从名为 v_jc_mae_zy 的视图中选择了四个列:fbihidfihdate上一个入院日期一个月后日期。其中,fbihid 表示患者的 ID,fihdate 表示患者住院的日期,上一个入院日期 表示患者上一次住院日期,一个月后日期 表示患者上一次住院日期的一个月后的日期。

为了计算 上一个入院日期一个月后日期,该查询使用了 LAG 窗口函数和日期函数 INTERVALLAG 函数用于返回在当前行之前的行中指定列的值。这里根据 fbihid 分组,按 fihdate 升序排序,以得到每个患者的住院日期的前一次入院日期。INTERVAL '31' DAY 表示一个月的时间间隔。因此,LAG(FIHDATE) OVER(PARTITION BY FBIHID ORDER BY FIHDATE) + INTERVAL '31' DAY 表示上一次住院日期的一个月后的日期。

接下来,该查询使用 COUNT 窗口函数计算了每个患者的住院次数,将其命名为 住院次数

最后,该查询使用条件筛选语句 WHERE,选择了满足以下条件的行:

  • 患者的住院次数大于 1。
  • 上一次住院日期的一个月后的日期大于当前的住院日期,或者上一次住院日期或一个月后的日期为空。

总之,这个查询的目的是返回那些住院次数大于 1,且上一次住院日期的一个月后的日期大于当前的住院日期或者上一次住院日期或一个月后的日期为空的患者的 ID、住院日期、上一次住院日期和上一次住院日期的一个月后的日期。

方法有很多种,本次遇到了该问题,所以记录一下,如有错误,还请指正

相关文章:

Oracle 多条记录根据某个字段获取相邻两条数据间的间隔天数,小于31天的记录都筛选出来

需求描述&#xff1a;在Oracle中 住院记录记录表为v_hospitalRecords&#xff0c;表中FIHDATE入院时间&#xff0c;FBIHID是住院号&#xff0c; 我想查询出每个患者在他们的所有住院记录中是否在一个月内再次入院(相邻的两条记录进行比较)&#xff0c;并且住院记录大于一的患者…...

【数据挖掘】如何修复时序分析缺少的日期

一、说明 我撰写本文的目的是通过引导您完成一个示例来帮助您了解 TVF 以及如何使用它们&#xff0c;该示例解决了时间序列分析中常见的缺失日期问题。 我们将介绍&#xff1a; 如何生成日期以填补数据中缺失的空白如何创建 TVF 和参数的使用如何呼叫 TVF我们将考虑扩展我们的日…...

CDN、P2P、PCDN的区别是什么

本篇文章为大家介绍一下与网络加速有关的几个重要概念&#xff0c;一起了解一下CDN,P2P和PCDN究竟是什么吧&#xff01; 1. CDN CDN即Content Delivery Network&#xff0c;中文全称为内容分发网络。 如果内容离用户远&#xff0c;用户可能无法获得及时的响应&#xff0c;那…...

MYSQL练习一答案

练习1答案 构建数据库 数据库 数据表 answer开头表为对应题号答案形成的数据表 表结构 表数据 答案&#xff1a; 1、查询商品库存等于50的所有商品&#xff0c;显示商品编号&#xff0c;商 品名称&#xff0c;商品售价&#xff0c;商品库存。 SQL语句 select good_no,good…...

路由器(第二十五课)

路由器的深入学习 一、路由 1、路由 1) 什么是路由:路由就是数据包从一个网络到另外一外网络的过程 2)支持路由功能的设备:路由器、三层交换机、防火墙 3 路由器转发数据包的依据: -每一台路由器都维护着一张路由表 -路由器是依靠这张路由表来转发数据的 -这张路由表就…...

物联网网关模块可以带几台plc设备吗?可以接几个modbus设备?

随着物联网技术的快速发展&#xff0c;物联网网关模块已经成为了实现物联网应用的重要工具。很多客户在选择物联网网关模块时想了解物联网网关模块的设备接入能力&#xff0c;一个物联网网关模块可以带几台PLC设备&#xff1f;可以接几个Modbus设备&#xff1f; 物联网网关模块…...

SpringBoot中间件—ORM(Mybatis)框架实现

目录 定义 需求背景 方案设计 代码展示 UML图 实现细节 测试验证 总结 源码地址&#xff08;已开源&#xff09;&#xff1a;https://gitee.com/sizhaohe/mini-mybatis.git 跟着源码及下述UML图来理解上手会更快&#xff0c;拒绝浮躁&#xff0c;沉下心来搞 定义&#x…...

结构化思维:高效能项目经理人的底层能力

大家好&#xff0c;我是老原。 我们经常会说「高效能」&#xff0c;那怎么成为高效能人士&#xff1f;其实除了拼体力和心力以外&#xff0c;高效能更重要的是脑力&#xff0c;这里的脑力不是指智力&#xff0c;而是结构化思维。 随着你在职场中不断成长和进阶&#xff0c;级…...

Pytorch个人学习记录总结 07

目录 神经网络-非线性激活 神经网络-线形层及其他层介绍 神经网络-非线性激活 官方文档地址&#xff1a;torch.nn — PyTorch 2.0 documentation 常用的&#xff1a;Sigmoid、ReLU、LeakyReLU等。 作用&#xff1a;为模型引入非线性特征&#xff0c;这样才能在训练过程中…...

vue3+ts+elementui-plus二次封装树形表格

复制粘贴即可&#xff1a; 一、定义table组件 <template><div classmain><div><el-table ref"multipleTableRef" :height"height" :default-expand-all"isExpend" :data"treeTableData"style"width: 100%…...

机器学习/深度学习常见算法实现(秋招版)

包括BN层、卷积层、池化层、交叉熵、随机梯度下降法、非极大抑制、k均值聚类等秋招常见的代码实现。 1. BN层 import numpy as npdef batch_norm(outputs, gamma, beta, epsilon1e-6, momentum0.9, running_mean0, running_var1)::param outputs: [B, L]:param gamma: mean:p…...

京东技术专家首推:Spring 微服务架构设计,GitHub 星标 128K

前言 本书提供了实现大型响应式微服务的实用方法和指导原则&#xff0c;并通过示例全面 讲解如何构建微服务。本书深入介绍了 Spring Boot、Spring Cloud、 Docker、Mesos 和 Marathon&#xff0c;还会教授如何用 Spring Boot 部署自治服务&#xff0c;而 无须使用重量级应用服…...

R语言--森林图制作

#数据准备- data5 #install.packages("rmda")rm(list=ls())library(MASS)library(rmda)library(dplyr) #mutate依赖环境library(magrittr) #%>%依赖setwd("D:/R/nomo5new2")data...

Tomcat中利用war包部署

在Tomcat中利用war包部署Web应用程序时&#xff0c;默认情况下&#xff0c;应用程序的上下文路径&#xff08;也称为项目名称&#xff09;将是war文件的名称&#xff08;去除.war扩展名&#xff09;。这意味着您在访问Web应用程序时必须在URL中包含项目名称。例如&#xff0c;如…...

[JAVAee]线程安全

目录 线程安全的理解 线程不安全的原因 ①非原子性 ②可见性 ③代码重排序 体会何为不安全的线程 保证线程安全 一个代码在多线程的环境下就很容易出现错误. 线程安全的理解 线程安全是什么呢?通俗的来讲,线程安全就是在多线程的环境下,代码的结果是符合我们预期的,就…...

ELK环境搭建——概况

Elastic Stack,核心产品包括 Elasticsearch、Kibana、Beats 和 Logstash等等。能够安全可靠地从任何来源获取任何格式的数据,然后对数据进行搜索、分析和可视化。 目录 一:Elasticsearch: 1.1 从数据中探寻各种问题的答案 1.1.1 定义您自己的搜索方式...

面试知识点整理

计算机的物理内存是有限的&#xff0c;所以操作系统在遇到内存不足时&#xff0c;会通过换页机制暂时把 某个进程未使用的内存中的数据搬移到硬盘上&#xff08;比如 Linux 的 swap 分区&#xff09;&#xff0c;并在系统页表中 删除相应的表项。当该进程访问数据已经被搬移到硬…...

腾讯云服务器CVM计算型c6/c5实例CPU型号、处理器主频大全

腾讯云服务器CVM计算型C6、C5、C4、CN3、C3和C2实例&#xff0c;计算型C6云服务器CPU采用Intel Xeon Ice Lake处理器&#xff0c;主频3.2GHz&#xff0c;睿频3.5GHz&#xff0c;腾讯云服务器网分享更多计算型CVM云服务器CPU型号、处理器主频性能说明&#xff1a; 目录 云服务…...

vue3笔记-脚手架篇

第一章 基础篇 第二章 脚手架篇 vue2与vue3的一些区别 响应式系统&#xff1a; Vue 2 使用 Object.defineProperty 进行响应式数据的劫持和监听&#xff0c;它对数据监听是一项项的进行监听&#xff0c;因此&#xff0c;当新增属性发生变化时&#xff0c;它无法监测到&…...

数字的补数

题目&#xff1a; 对整数的二进制表示取反&#xff08;0 变 1 &#xff0c;1 变 0&#xff09;后&#xff0c;再转换为十进制表示&#xff0c;可以得到这个整数的补数。 例如&#xff0c;整数 5 的二进制表示是 "101" &#xff0c;取反后得到 "010" &…...

我不是在用 AI 助手,我在把自己的能力沉淀成组织资产

先唠两句&#xff1a;参数就像餐厅点单 把API想象成一家餐厅的“后厨系统”。 ? 路径参数/dishes/{dish_id} -> 好比你要点“宫保鸡丁”这道具体的菜&#xff0c;它是菜单&#xff08;资源路径&#xff09;的一部分。查询参数/dishes?spicytrue&typeSichuan -> 好比…...

如何快速解锁AMD 780M APU的完整AI性能?终极优化指南

如何快速解锁AMD 780M APU的完整AI性能&#xff1f;终极优化指南 【免费下载链接】ROCmLibs-for-gfx1103-AMD780M-APU ROCm Library Files for gfx1103 and update with others arches based on AMD GPUs for use in Windows. 项目地址: https://gitcode.com/gh_mirrors/ro/…...

告别HEIC预览盲区:让Windows用户轻松驾驭苹果图像格式

告别HEIC预览盲区&#xff1a;让Windows用户轻松驾驭苹果图像格式 【免费下载链接】windows-heic-thumbnails Enable Windows Explorer to display thumbnails for HEIC files 项目地址: https://gitcode.com/gh_mirrors/wi/windows-heic-thumbnails 问题场景&#xff1…...

CanFestival主站PDO配置避坑指南:以Kinco FD伺服的速度/位置模式控制为例

CanFestival主站PDO配置实战&#xff1a;从零解析Kinco FD伺服双模式控制 当你在深夜的实验室里盯着屏幕上闪烁的CAN报文&#xff0c;却发现伺服电机对控制指令毫无反应时&#xff0c;那种挫败感每个工控开发者都深有体会。本文将带你穿透CanFestival主站配置的迷雾&#xff0c…...

深入解析RK3576 Android14中camera3_profiles_rkxxxx.xml的自定义数据格式支持

1. RK3576 Android14相机配置文件的秘密 最近在调试RK3576平台的相机模块时&#xff0c;遇到了一个棘手的问题&#xff1a;需要为定制摄像头添加特殊数据格式。当我打开camera3_profiles_rkxxxx.xml文件时&#xff0c;发现它只支持BLOB、YCbCr_420_888和IMPLEMENTATION_DEFINED…...

Node.js——事件的监听与触发

事件的监听与触发1、EventEmitter对象2、添加和触发监听事件2.1、添加监听事件2.2、添加单次监听事件2.3、触发监听事件3、删除监听事件1、EventEmitter对象 在JavaScript中&#xff0c;通过事件可以处理许多用户的交互&#xff0c;比如鼠标的单击、键盘按键的按下、对鼠标移动…...

基于YOLO的安全帽佩戴检测系统~Python+模型训练+2026原创+YOLO算法

项目简介 基于 YOLO 的智能安全帽佩戴检测平台&#xff0c;面向施工现场图片识别、检测记录管理与安全宣传信息展示等业务场景。系统后端采用 Flask 搭建 RESTful API 服务&#xff0c;结合数据库进行业务数据持久化存储&#xff0c;并通过 JWT 实现用户身份认证与接口访问控制…...

告别996!我用Qoder AI编程平台,一天搞定全栈电商项目(附保姆级实战流程)

从零到上线&#xff1a;Qoder AI全栈电商项目实战手记 凌晨三点的显示器蓝光里&#xff0c;我第17次调试购物车接口时&#xff0c;咖啡杯底黏着的便签写着"再熬三天就能交付"。这个典型的程序员996场景&#xff0c;在上个月使用Qoder开发新电商平台时被彻底颠覆——从…...

Memos笔记数据安全吗?手把手教你配置自动备份到GitHub/对象存储(防丢指南)

Memos数据安全全攻略&#xff1a;从本地备份到云端同步的完整方案 Memos作为一款轻量级开源笔记工具&#xff0c;凭借其简洁界面和本地存储特性赢得了不少用户青睐。但数据安全始终是悬在每位用户心头的一把剑——服务器宕机、硬盘损坏、误操作删除都可能让珍贵笔记瞬间消失。本…...

Flink SQL CDC避坑指南:为什么你的Debezium源表总是漏数据?

Flink SQL CDC数据一致性实战&#xff1a;从Debezium陷阱到高可靠架构设计 在电商大促秒杀和金融交易风控这类对数据一致性要求严苛的场景中&#xff0c;Flink CDC已成为实时数仓建设的核心组件。但当你在凌晨三点收到报警通知&#xff0c;发现订单宽表丢失了关键字段时&#x…...