2016-11-04 9 views
-1

Ich habe ein wenig seltsam Problem mit einer MySQL-Abfrage :)mysql Summe Abfrage zwischen Intervall

Dies ist meine Tabelle:

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

Mein Ziel ist es dies: Erstellen Sie eine Abfrage, die Summe aller Wert Von 14:00 bis 16:00 Uhr, um 5 oder 10 Minuten zu gehen.

ich etwas tun, das in der Nähe der Lösung ist, dies zu tun N Zeit (14:00 zu 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' 

... und so weiter ...

Exists eine Abfrage, die nur den Intervallbereich angibt? I whould gerne in den Ausgang, so etwas haben:

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 

...

Dank für die Hilfe!

+1

Siehe http://meta.stackoverflow.com/ Fragen/333952/warum-sollte-ich-bieten-eine-MCVE-für-was-scheint-mir-zu-eine-sehr-einfache-SQL-Abfrage – Strawberry

Antwort

0

Sie könnten einen Tisch 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 

Sie können diesen Beitrag um zu sehen, verwenden, wie eine Liste von Tag zu generieren, einfach für die Minuten zu ändern.

generate days from date range

und dann

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

Danke für die Antwort, aber es ist ein bisschen schwer, einen Tisch jedes Mal für ein Datum zu generieren! Vielleicht sollte ich den Weg ändern und Python machen! – egariM

+0

Sie brauchen keine Tabelle, Sie können eine Unterabfrage erstellen. Hast du den Link Tage generieren überprüft? –

0

Nun können Sie mysql date_add() Funktion wie folgt verwendet werden:

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

'summieren Sie den Wert von 14:00 bis 16:00 Uhr um 5 oder 10 Minuten.' ?? –

+0

Es tut uns leid, die Frage falsch gelesen zu haben, dies beinhaltet nicht den Schrittprozess, Entschuldigung. –

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

Nein, du liest die Frage nicht! :) Schritt um fünf Minuten ... – egariM