分享一个sql统计的客户需求

server/2025/3/17 18:04:46/

分享个最近的一个需求

领导想要知道各个时间段,各个科室,哪些是预出院的患者,哪些是临时出院的患者,在我看来对于系统来说好像没有什么好的界定方式,我就细问下应该如何界定(防止查错背锅)


在我再次确认下,得到的是只要是出院时间在早上12点前,并且开有今日出院+明日出院 这两条医嘱的就算是预出院患者,还需要查开了今日出院,没开明日出院的以及两者都没开立的


那么,我们要写的sql就是
字段1:(出院时间)字段2:(科室名词)字段3:(12点前+今日出院+明日出院)字段4:(全天+今日出院+无明日出院)字段5:(全天+无今日出院+无明日出院)
这个查询统计的难点主要在于,医嘱表是不止今明出院这两条医嘱的,就需要换个思路去解决
字段3好说,in('今日出院','明日出院')即可
字段4需要 先查出今日出院,再查出明日出院,最后把今日出院总数-明日出院总数,也就是(今日出院总数)-(明日出院总数)
字段5则是 (查出科室带出院时间的人)-(今日出院总数)-(明日出院总数)

最后需要按科室汇总,时间排序
以下是实际sql,有好的优化思路也可以分享下

SELECT SUBSTR(i3.HOSPITAL_DISCHARGE_TIME, 1, 8) AS discharge_date,i3.DEPT_NAME, COUNT(DISTINCT CASE WHEN io.ipid IS NOT NULL THEN i3.IPID END) AS 有今明,COUNT(DISTINCT CASE WHEN fo.ipid IS NULL THEN i3.IPID END) AS 有今无明,COUNT(DISTINCT CASE WHEN io.ipid IS NULL THEN i3.IPID END) AS 今明都无
FROM adt.INPATIENT i3
LEFT JOIN (SELECT mo.ipidFROM adt.INPATIENT i2JOIN inpord.MEDICAL_ORDER mo ON i2.IPID = mo.IPIDWHERE mo.ORDER_code = '938' AND i2.HOSPITAL_DISCHARGE_TIME >= '20250301000000') o938 ON i3.IPID = o938.ipid
LEFT JOIN (SELECT mo.ipidFROM adt.INPATIENT i2JOIN inpord.MEDICAL_ORDER mo ON i2.IPID = mo.IPIDWHERE mo.ORDER_code = 'F00000099821' AND i2.HOSPITAL_DISCHARGE_TIME >= '20250301000000') fo ON i3.IPID = fo.ipid
LEFT JOIN (SELECT DISTINCT i2.ipidFROM adt.INPATIENT i2JOIN inpord.MEDICAL_ORDER mo ON i2.IPID = mo.IPIDWHERE mo.ORDER_code IN ('938', 'F00000099821') AND i2.HOSPITAL_DISCHARGE_TIME >= '20250301000000'AND SUBSTR(i2.HOSPITAL_DISCHARGE_TIME, 9, 4) <= '1200'  ) io ON i3.IPID = io.ipid
WHERE i3.HOSPITAL_DISCHARGE_TIME IS NOT NULLAND i3.HOSPITAL_DISCHARGE_TIME >= '20250301000000'AND SUBSTR(i3.HOSPITAL_DISCHARGE_TIME, 5, 4) = '0301'  AND i3.dept_name != '测试'
GROUP BY SUBSTR(i3.HOSPITAL_DISCHARGE_TIME, 1, 8), i3.DEPT_NAME
ORDER BY discharge_date ASC;


http://www.ppmy.cn/server/175751.html

相关文章

SpringBoot 集成logback日志链路追踪

项目场景 有时候一个业务调用链场景&#xff0c;很长&#xff0c;调了各种各样的方法&#xff0c;看日志的时候&#xff0c;各个接口的日志穿插&#xff0c;确实让人头大。 为了解决这个痛点&#xff0c;就使用了 TraceId&#xff0c;根据 TraceId 关键字进入服务器查询日志中…

【sql靶场】第15、16关-post提交盲注保姆级教程

目录 【sql靶场】第15、16关-post提交盲注保姆级教程 1.知识回顾 ‌GET请求‌ ‌POST请求‌ or与and 2.第十五关 1.布尔盲注的手动注入 1.判断 2.数据库名长度 3.数据库名字符 4.表名数 5.表名长度 6.表名符 7.字段数 8.字段长度 9.字段符 2.布尔盲注的脚本注入…

ROS实践(五)机器人自动导航(robot_navigation)

目录 一、知识点 1. 定位 2. 路径规划 (1)全局路径规划 (2)局部路径规划 3. 避障 二、常用工具和传感器 三、相关功能包 1. move_base(决策规划) 2. amcl(定位) 3. costmap_2d(代价地图) 4. global_planner(全局规划器) 5. local_planner(局部规划器…

ubuntu24.04执行nvidia-smi报错,实际生产报错,处理过程

报错日志 root@h1-29:/var/nvidia-driver-local-repo-ubuntu2404-570.124.06# nvidia-smi Failed to initialize NVML: Driver/library version mismatch NVML library version: 570.124 解决 NVML 驱动/库版本不匹配 问题的分步指南‌ 根据你的描述,当前系统已安装 570.12…

【医学影像 AI】大型语言模型生成 ROP 患者信息材料的能力

【医学影像 AI】大型语言模型生成 ROP 患者信息材料的能力 0. 论文简介0.1 基本信息0.2 摘要 1. 引言2. 材料与方法2.1 大语言模型的使用2.2 可读性标准2.3 统计分析 3. 结果3.1 Bezirci-Yılmaz可读性评分3.2 Ateşman可读性评分3.3 全面性评分3.4 准确性评分 4. 讨论4.1 可读…

【草堂笔记】ARM5到ARM6 分散文件加载错误问题

一 、 背景 在最近的一次项目中&#xff0c;使用的是ciu32L系列的单片机&#xff0c;因为初始化时&#xff0c;需要对flash进行一些数据写入&#xff0c;发现其使用的是ARM5编译 用官方的历程编译一切正常&#xff0c;但我项目使用的是ARM6编译器&#xff0c;所以我也试了下&a…

LeetCode--198. 打家劫舍【从返回最大值到输出路径】

198. 打家劫舍 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。 给定一个代表每个房…

Qt 通过MSVC编译运行项目

第一步下载Qt 把Qt能选的插件都选上&#xff0c;有的是连接数据库必须得插件&#xff0c;有的是做图表必须得插件&#xff0c;有的是运行MSVC必须得插件&#xff0c;能选尽量都选上。 第二步安装VS2017&#xff0c;当然我们安装2017的目的主要是用C的编译器&#xff0c;这里提…