oracle连续n天数据统计

近日接到同事项目上统计需求,需要统计便秘患者。规则是连续三天(包含三天)以上大便次数为零的患者。统计思路使用用户连续登录3天一样,用记录日期减去排序号,所得日期相同;再统计日期相同的记录大于等于3即可。

示例数据

因表中有多个患者的体征信息,需要通过partition by给每个患者的记录重建排序号。

 select to_char(record_date - nums, 'yyyy-mm-dd') record_date,
               patient_id,
               visit_id
          from (SELECT t.record_date,
                       row_number() over(partition by t.patient_id, t.visit_id order by t.record_date) nums,
                       t.vital_value,
                       t.patient_id,
                       t.visit_id
                  FROM nurse_vital_signs_rec t
                 where t.vital_signs = '大便次数'
                   and t.vital_value = '0'
                 order by t.patient_id, t.visit_id, t.record_date)

查出数据

再统计数量大于等于3的记录

select record_date, patient_id, visit_id
  from (select to_char(record_date - nums, 'yyyy-mm-dd') record_date,
               patient_id,
               visit_id
          from (SELECT t.record_date,
                       row_number() over(partition by t.patient_id, t.visit_id order by t.record_date) nums,
                       t.vital_value,
                       t.patient_id,
                       t.visit_id
                  FROM nurse_vital_signs_rec t
                 where t.vital_signs = '大便次数'
                   and t.vital_value = '0'
                 order by t.patient_id, t.visit_id, t.record_date))
 group by record_date, patient_id, visit_id
having count(record_date) >= 3;

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值