我对mysql查询有点奇怪的问题:)
这是我的表:
mysql> describe meteo;
| Field | Type | Null | Key | Default | Extra |
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(32) | NO | | NULL | |
| date | datetime | NO | | NULL | |
| value | int(8) | NO | | NULL | |
我的目标是:创建一个查询,将所有值从14:00到16:00相加,步进5或10分钟。
我从(14:00到16:00)的N时间做了一些接近解决方案的事情
SELECT sum(value) FROM meteo WHERE date>='2016-09-9 14:30:00' AND date<='2016-09-9 14:35:00'
SELECT sum(value) FROM meteo WHERE date>='2016-09-9 14:35:00' AND date<='2016-09-9 14:40:00'
... 等等...
存在执行此操作的查询仅提供间隔范围? 我希望在输出中有这样的东西:
2016-09-9 14:30:00 2016-09-9 14:35:00 176
2016-09-9 14:35:00 2016-09-9 14:40:00 2312
...
感谢您的帮助!
答案 0 :(得分:0)
您可以使用表min_interval
id begin END
1 2016-09-9 14:30:00 2016-09-9 14:35:00
2 2016-09-9 14:35:00 2016-09-9 14:40:00
3 2016-09-9 14:40:00 2016-09-9 14:45:00
你可以查看这篇文章,看看如何生成一天的列表,几分钟内容易更改。
然后
SELECT m.begin, m.end, SUM(t.value)
FROM min_interval m
LEFT JOIN meteo t
ON t.date >= m.begin
AND t.date < m.end
GROUP BY m.begin, m.end
答案 1 :(得分:0)
你可以使用mysql date_add()函数:
SELECT sum(value) FROM meteo WHERE date BETWEEN DATE_ADD(date,INTERVAL 5 MINUTE) AND date
答案 2 :(得分:0)
Select sum(value) from Meteo Where date >= currentDate 13:55 and date <= currentDate 16:10;