求计算医院住院期初人数的sql

TLJewel 2014-11-27 05:33:29
表结构如下
with tab1 as(
select 1 id,'O' state,to_date('2014-9-1','yyyy-MM-dd') in_date,to_date('2014-11-1','yyyy-MM-dd') out_date from dual
union all select 2,'O' state,to_date('2014-9-3','yyyy-MM-dd'),to_date('2014-10-23','yyyy-MM-dd') from dual
union all select 3,'O' state,to_date('2014-11-1','yyyy-MM-dd') ,to_date('2014-11-26','yyyy-MM-dd') from dual
union all select 4,'I' state, to_date('2014-8-1','yyyy-MM-dd'),to_date('0001-1-1','yyyy-MM-dd') from dual
union all select 5,'I' state, to_date('2014-8-1','yyyy-MM-dd'),to_date('0002-1-1','yyyy-MM-dd') from dual
union all select 6,'O' state, to_date('2014-10-1','yyyy-MM-dd'),to_date('2014-10-28','yyyy-MM-dd') from dual
)
select * from tab1

注:
1.状态为 I 表示患者还未出院。
2.因为患者最早入院时9月1日,所以9月的期初为0.

期望的结果:
year_month count
201408 0
201409 2
201410 4
201411 3

大神帮帮忙,这类的sql没写过。
...全文
687 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
小灰狼W 2014-11-27
  • 打赏
  • 举报
回复
with tab1 as(
select 1 id,'O' state,to_date('2014-9-1','yyyy-MM-dd') in_date,to_date('2014-11-1','yyyy-MM-dd') out_date from dual
union all select 2,'O' state,to_date('2014-9-3','yyyy-MM-dd'),to_date('2014-10-23','yyyy-MM-dd') from dual
union all select 3,'O' state,to_date('2014-11-1','yyyy-MM-dd') ,to_date('2014-11-26','yyyy-MM-dd') from dual
union all select 4,'I' state, to_date('2014-8-1','yyyy-MM-dd'),to_date('0001-1-1','yyyy-MM-dd') from dual
union all select 5,'I' state, to_date('2014-8-1','yyyy-MM-dd'),to_date('0002-1-1','yyyy-MM-dd') from dual
union all select 6,'O' state, to_date('2014-10-1','yyyy-MM-dd'),to_date('2014-10-28','yyyy-MM-dd') from dual
),

ym as(
select add_months(to_date('201408','YYYYMM'),rownum-1) month_ from dual connect by rownum<=4)
select to_char(ym.month_, 'YYYYMM') month_, count(t.id)
  from tab1 t
 right join ym
    on t.in_date < trunc(ym.month_, 'MM')
   and (t.out_date >= trunc(ym.month_, 'MM') or
       t.state = 'I' and sysdate >= trunc(ym.month_, 'MM'))
 group by ym.month_
 order by ym.month_
小灰狼W 2014-11-27
  • 打赏
  • 举报
回复
统计的是每个月的第一天的0点有多少个住院人数?
【资源说明】 该项目是个人毕设项目源码,评审分达到95分,都经过严格调试,确保可以运行!放心下载使用。 该项目资源主要针对计算机、自动化等相关专业的学生或从业者下载使用,也可作为期末课程设计、课程大作业、毕业设计等。 具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现类似其他功能。 开发工具用idea不要用eclipse,数据库是mysql8.0版本 管理员账号密码: admin/111111 系统要: ## 1.疫情人员管理模块 确诊感染者信息管理:姓名、年龄、性别、身份证号等。治疗信息如下:感染源、是否重症、住院时间、发病症状、诊治医院、信息备注以及相应的核酸检测及ct检测历史。 入境人员信息管理:姓名、年龄、性别、身份证号,是否发热咳嗽,来源地,离开来源地时间,乘坐过的交通工具,车次,座位号,隔离起始日期,隔离结束日期,隔离地址,家庭住址,每日体温检测,核酸检测记录(共四次),解除隔离或转为确诊感染者 (说明:对入境人员(符合规定的从澳门进入内地人员除外)一律实行“14 天+7 天+7 天+4 次核酸检测”健康管理服务措施,即:对入境人员实行集中隔离医学观察 14 天(期间进行 2 次核酸检测;14 天期满后,对符合解除集中隔离条件的人员纳入社区管理)+继续实施居家隔离观察 7 天(居家隔离第 7 天进行第3 次核酸检测)+对居家隔离观察期满、核酸检测阴性者继续实施日常自我健康监测 7 天(结束前进行第 4 次核酸检测) 中高风险接触者信息管理:姓名、年龄、性别、身份证号以及接触情况(如到过中高风险地区、与患者或者高风险接触者共同乘坐过交通工具、是否冷链食品的相关工作人员)所在隔离地址、起始隔离日期等。隔离14天期间,每日体温检测,进行三次核酸检测并记录检测结果。满14天后,根据人员的身体状况及检测结果可将其转确诊感染者或者解除隔离。 低风险接触者信息管理:姓名、年龄、性别、身份证号,家庭住址,乘坐过的交通工具、是否有健康码 ## 2.疫情工作管理模块 疫情动态管理(标题,内容,发布人,发布日期) 领导信息管理(编号,领导姓名,性别,组织名称,职务,联系电话,备注,照片) ## 3.疫情防控统计模块 入境人员(所在地区人数统计,性别人数统计,年龄段统计) 中高风险接触人员统计(所在地区人数统计,性别人数统计,年龄段统计) 确诊感染人员统计(所在地区人数统计,性别人数统计,年龄段统计) ## 4.用户管理 用户账户的增删改查,以及修改个人信息。 防控统计用可视化显示 启动系统的时候先是注册账号然后登录进入系统界面,界面的左侧就是上面的各管理模块,右侧是疫情动态公告以及模块3的可视化显示图。 资源附有项目运行效果截图,数据库等

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧