计算在MySQL中触发条件的次数到时间流逝

时间:2014-02-16 11:54:13

标签: mysql sql datetime timelapse

我有这个sql表

     temp_int   hum_int   datetime             
      25.9        84   2013-10-01 11:30:00  
      26.4        81   2013-10-01 11:45:00  
      25.3      88.1   2013-10-02 11:00:00  
      26.3      85.8   2013-10-02 11:15:00  
      27.1      83.5   2013-10-02 11:30:00  
      27.9      81.9   2013-10-02 11:45:00  
      28.8        81   2013-10-02 12:00:00  
      26.1      80.3   2013-10-02 19:15:00  
      25.8      81.6   2013-10-02 19:30:00  

所以我想要计算 45 分钟超过条件的次数。 条件是 temp_int> = 25并且hum_int> 80 ,因此对于此示例,数据集必须给我1作为结果:

第一个= 2013-10-02 11:00:00

第二个= 2013-10-02 11:45:00

例如:

enter image description here

对于这个集合,mysql必须返回一行,例如在启动时间窗口时。

1 个答案:

答案 0 :(得分:0)

要实现这一点,我必须创建额外的列ID以便在行之间轻松处理,您还应该这样做。并用这样的值填充它:

id  temp_int   hum_int   datetime             
 1    25.9        84   2013-10-01 11:30:00  
 2    26.4        81   2013-10-01 11:45:00  
 3    25.3      88.1   2013-10-02 11:00:00  
 4    26.3      85.8   2013-10-02 11:15:00  
 5    27.1      83.5   2013-10-02 11:30:00  
 6    27.9      81.9   2013-10-02 11:45:00  
 7    28.8        81   2013-10-02 12:00:00  
 8    26.1      80.3   2013-10-02 19:15:00  
 9    25.8      81.6   2013-10-02 19:30:00 

然后运行此查询

select  t1.`datetime`
from contacts t1
inner join contacts t2
on t2.id = (t1.id + 1)
where TIMESTAMPDIFF(MINUTE,t1.`datetime`,t2.`datetime`) > 45
and t1.temp_int>=25 and t1.hum_int>80

WATCH DEMO HERE