以下为例子数据 图1

mysql 统计连续天数

                              图1

 

 

 

首先根据要求取出BeforeMeal要在7.0以下 并且 bingAfterMeal要在11.1以下

select AccountId,CreateTime from DiabetesRecord where BeforeMeal < 7.0 and AfterMeal < 11.1 group by AccountId,CreateTime

 得到以下数据如图2

mysql 统计连续天数

            图2

 

 

把连续的天数进行分组

select *,((select count(1) from (select AccountId,CreateTime from DiabetesRecord where BeforeMeal < 7.0 and AfterMeal < 11.1 group by AccountId,CreateTime)dr2 where dr1.AccountId = dr2.AccountId and dr2.CreateTime <= dr1.CreateTime) - day(dr1.CreateTime)) as 'rownum' from (select AccountId,CreateTime from DiabetesRecord where BeforeMeal < 7.0 and AfterMeal < 11.1 group by AccountId,CreateTime)dr1

结果如图3所示

mysql 统计连续天数

            图3

 

 

按用户 、开始时间、结束时间 和 连续天数分组

 

select AccountId,min(CreateTime),max(CreateTime),(datediff(max(CreateTime),min(CreateTime))+1) as 'rn' from 
(select *,((select count(1) from (select AccountId,CreateTime from DiabetesRecord where BeforeMeal < 7.0 and AfterMeal < 11.1 group by AccountId,CreateTime)dr2 where dr1.AccountId = dr2.AccountId and dr2.CreateTime <= dr1.CreateTime) - day(dr1.CreateTime)) as 'rownum' from (select AccountId,CreateTime from DiabetesRecord where BeforeMeal < 7.0 and AfterMeal < 11.1 group by AccountId,CreateTime)dr1)z group by AccountId,rownum

得到如图4所示

mysql 统计连续天数

                图4

 

 

 

 

 

 

 




 

相关文章:

  • 2022-12-23
  • 2022-01-09
  • 2021-10-20
  • 2021-07-26
  • 2021-08-08
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-09-08
  • 2022-12-23
  • 2022-01-14
  • 2022-02-10
  • 2022-12-23
  • 2022-12-23
  • 2021-09-03
相关资源
相似解决方案