2016-11-04 4 views
-1

У меня есть немного нечетным проблемы с MySQL Query :)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 минут.

я сделать то, что рядом с решением делать это время от N (14:00 до 16:00)

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' 

... и так далее ...

Exists запрос, который делает это, только задавая интервал? я whould хотел бы иметь что-то вроде этого на выходе:

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 

...

Спасибо за помощь!

+1

См http://meta.stackoverflow.com/ вопросы/333952/why-should-i-обеспечить-mcve-for-what-seem-to-me-to-be-a-very-simple-sql-query – Strawberry

ответ

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 

Вы можете посмотреть этот пост, чтобы увидеть, как создать список день, легко изменить за несколько минут. Функция

generate days from date range

, а затем

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 
+0

Спасибо за ответ, но это немного сложно создать таблицу каждый раз для даты! Может быть, я должен изменить способ и сделать это в python! – egariM

+0

Вам не нужен стол, вы можете создать подзапрос. Вы проверяли ссылку на создание дней? –

0

Ну вы можете использовать MySQL DATE_ADD(), как это:

SELECT sum(value) FROM meteo WHERE date BETWEEN DATE_ADD(date,INTERVAL 5 MINUTE) AND date 
+1

'сумма всей стоимости с 14:00 до 16:00, шаг за шагом 5 или 10 минут.' ?? –

+0

Извините неправильно прочитанный вопрос, это не будет включать процесс шага, извинения. –

0
Select sum(value) from Meteo Where date >= currentDate 13:55 and date <= currentDate 16:10; 
+0

нет, и не читайте вопрос! :) Шаг пять минут ... – egariM