Frank (no reg): Summenbildung in Gruppen

Beitrag lesen

Hi, es kommt auch darauf an, welcher Maschine in einer Gruppe du die Priorität für die Zeit gibst, in deinem Beispiel scheint es A zu sein, verwendest du C hast du beim ersten C schon 2x A. Dein Problem ist ganz und gar nicht trivial und wie sonst sehr oft der Fall, kann man auch nicht sagen, es läge an einem suboptimalen Datenmodell.

nummeriere vielleicht die Records für A, B und C sortiert nach Zeitstempel durch. Der erate A Record bekommt die 1, der zweite A Record die 2, der erste C Rrcord wieder die 1 usw. Wenn du dann die Gruppe AC zusammenfassen willst, dann fasst du die Einträge mit derselben Ordnungsnummer zusammen. In deinem Beispiel, würde das ein problem mit dem ersten C geben, was eigentlich zum 2. A gehören sollte. Also müsstest du für das 2. und jedes folgende Mitglied einer Gruppe  noch die zeitliche differenz einbeziehen: eine Instanz eines 2. oder folgenden Gruppenmitglieds gehört zu der Instanz des 1. Gruppenmitglieds wo die Differenz des Zeitstempels am geringsten ist plus diesbezüglich evt noch weitere Bedingungen eine Rolle spielen sollen. Aber es kommt wirklich darauf an, wer hinsicht des Zeitstempels die Priorität hat. Aus diesem Grund würde ich die weit weniger komplexe und ergebnissicherere Variante wählen: Bilde von 00:00 an Zeitfenster mit einer bestimmten Periodizität z.b. 3min (oder die geringste differenz aller Records), summiere in diese Zeitfenster hinein deine Gruppen und nimm am Ende nur die Zeitfenster wo win Wert drin ist (count != 0).

Das sollte auch mit mysql zu machen sein.

Eine andere Variante wäre noch, direkt beim Insert in die Tabelle eine Shadow Table zu pflegen, (prosa) wenn neuer eintrag für gruppeninstan (anhand vom Zeitstempel) aber gruppenmitglied nicht schon enthalten, füge hinzu ansonsten mach neue gruppeninstanz auf. Dies kann man nachträglich auch besser in PHP etc umsetzen als in SQL.

Cheers, Frank