0

我有这个 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

例如:

在此处输入图像描述

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

4

1 回答 1

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

在这里观看演示

于 2014-02-16T12:34:18.903 回答