Ich hoffe, dass jemand mit dieser kniffligen Frage helfen:Gruppe von benachbarten Zeitwert
Wie kann ich „GROUP BY“ einige Zeilen, die einen konfigurierbaren benachbarten Abstand zwischen den Zeitstempeln haben?
Beispieltabelle
ID | Value | When
1 | 5 | 2017-06-30 11:45:55
2 | 9 | 2017-06-30 11:45:56
3 | 0 | 2017-06-30 11:45:59
4 | 2 | 2017-06-30 11:46:02
5 | 7 | 2017-06-30 17:19:22
6 | 7 | 2017-06-30 17:19:22
7 | 3 | 2017-06-30 17:19:22
8 | 6 | 2017-06-30 17:19:22
Wunschergebnis:
ID | Value | When
3 | 0 | 2017-06-30 11:45:59
7 | 3 | 2017-06-30 17:19:22
Das Ergebnis soll benachbarte Einträge finden (im Beispiel zwei Gruppen zu je vier Zeilen pro Stück) und den niedrigsten "Value" sagen. Benachbarte Entfernung kann einen Wert von 1 Minute oder 10 Minuten haben.
Ich habe versucht, das Datum neu zu formatieren, um "GROUP BY" ohne Sekunden, aber dies wird nicht für das erste Ergebnis funktionieren.
Meine MySQL-Programmierkenntnisse sind begrenzt, aber es könnte mit folgenden Schritten erfolgen:
- SELECT und ORDER BY „Wenn“
- Go obwohl Werte und sagen Differenz zwischen aktuellen und früheren „Wenn“ Wert, wenn innerhalb des Bereichs, dann GROUP, wenn keine neue Zeile ausgegeben wird.
Irgendeine Idee?
Möglicherweise würde es funktionieren, wenn wir eine Variable wie "last_when" (immer aus der vorherigen Zeile) und GROUP BY so lange wie (HAVING?) "TIMESTAMPDIFF (ZWEIT, wann, last_when)