Ich möchte Zeilen summieren, aber nur Werte enthalten, für die vor fünf Minuten ein Zeitstempel existiert. Ich benutze bigquery, die anscheinend keine timestamp_diff-Operation unterstützt (aber eine datediff).Zeilen von SQL-Operation ausschließen, wenn für einen früheren Zeitstempel kein Eintrag existiert
Betrachten Sie die folgenden Daten (mytable):
SELECT time, SUM(value) AS sumValue, COUNT(value) AS obs
FROM mytable
GROUP BY time
Der Ausgang ist dann:
time sumValue obs
2013-07-03 07:50:00 7 2
2013-07-03 07:55:00 7 2
2013-07-03 08:00:00 7 2
2013-07-03 08:05:00 3 1
2013-07-03 08:10:00 7 2
time (timestamp) meter (int) value (float)
2013-07-03 07:50:00 1 3
2013-07-03 07:50:00 2 4
2013-07-03 07:55:00 1 3
2013-07-03 07:55:00 2 4
2013-07-03 08:00:00 1 3
2013-07-03 08:00:00 2 4
2013-07-03 08:05:00 1 3
2013-07-03 08:10:00 1 3
2013-07-03 08:10:00 2 4
Die Abfrage Ich mag würde auf erweitern zuerst definiert werden als
Ich möchte, dass diese Abfrage erweitert wird, damit der Wert von meter 2 nicht in sumValue für 2013-07-03 08: 1 enthalten ist 0:00 (also sumValue hier = 3), weil es vor fünf Minuten keinen Eintrag mehr gab. Eine weitere Konsequenz davon ist, dass sumValue für den ersten Zeitstempel null wäre. Die gewünschte Ausgabe wäre dann:
time sumValue obs
2013-07-03 07:50:00 0 0
2013-07-03 07:55:00 7 2
2013-07-03 08:00:00 7 2
2013-07-03 08:05:00 3 1
2013-07-03 08:10:00 3 1
Kann dies in bigquery getan werden?