我有这个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必须返回一行,例如在启动时间窗口时。
答案 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