Hallo Leute,
ich stehe gerade ein wenig auf dem Schauch, vielleicht hat ja jemand einen guten Tipp für mich.
Ich habe eine Tabelle mit einer ID, einem Timestamp und diversen Spalten mit irgendwelchen numerischen Werten, für die Frage unerheblich.
Aufgrund diverser Gründe wird die Tabelle allerdings nicht sekündlich mit Werten gefüttert sondern verliert über den Tag etwa 2000 Sekunden. Selten mehr als 2 Sekunden am Stück.
Mein Ziel ist es nun, dass ich über ein irgendwie geartetes SELECT die fehlenden Werte approximiert mit in meinem SQL-Ergebnis habe.
Beispiel:
Mit diesem SELECT würde ich mir dann einen View speichern und mit diesem dann weitere Verarbeitungen angehen. Wie gehe ich sowas an? SQL (spezielle MySQL) bietet dafür bestimmt eine Möglichkeit. Gibt es da vielleicht auch irgendwas zu beachten, was die Performance angeht? Es sind eine ganze Menge Einträge die da mitunter gefüllt werden müssten.
Meine rohen Gedanken, die ich derzeit nicht im Stande bin zusammenzubringen:
[src=mysql]# mit @ kann man eigene Variablen einfügen
SELECT id, timestamp, value from tbl;
SELECT `-` as id, (t1.timestamp+1) as timestamp, (t1.value + t2.value)/2 as value FROM tbl as t1 INNER JOIN tbl as t2 WHERE t1.timestamp +1 <> t2.timestamp AND t1.Id +1 = t2.Id;
# man kann mit union dann entsprechend die Ergebnisse vereinen
# Das muss aber irgendwie noch in einer Art Schleife gepackt werden oder so.
[/src]
Hat hier jemand einen Tipp für mich, wie ich das geschickt umsetzen kann? Bin ich darauf angewiesen alle x Sekunden / Minuten ein Skript laufen zu lassen, was fehlende Datensätze findet und berechnet/einfügt? Das muss doch auch irgendwie so gehen.
Grüße!
ich stehe gerade ein wenig auf dem Schauch, vielleicht hat ja jemand einen guten Tipp für mich.
Ich habe eine Tabelle mit einer ID, einem Timestamp und diversen Spalten mit irgendwelchen numerischen Werten, für die Frage unerheblich.
Aufgrund diverser Gründe wird die Tabelle allerdings nicht sekündlich mit Werten gefüttert sondern verliert über den Tag etwa 2000 Sekunden. Selten mehr als 2 Sekunden am Stück.
Mein Ziel ist es nun, dass ich über ein irgendwie geartetes SELECT die fehlenden Werte approximiert mit in meinem SQL-Ergebnis habe.
Beispiel:
Id | Timestamp | Value |
1 | 15:00:00 | 6 |
2 | 15:00:01 | 8 |
(berechnet) | 15:00:02 | (8+12)/2 = 10 |
3 | 15:00:03 | 12 |
Mit diesem SELECT würde ich mir dann einen View speichern und mit diesem dann weitere Verarbeitungen angehen. Wie gehe ich sowas an? SQL (spezielle MySQL) bietet dafür bestimmt eine Möglichkeit. Gibt es da vielleicht auch irgendwas zu beachten, was die Performance angeht? Es sind eine ganze Menge Einträge die da mitunter gefüllt werden müssten.
Meine rohen Gedanken, die ich derzeit nicht im Stande bin zusammenzubringen:
[src=mysql]# mit @ kann man eigene Variablen einfügen
SELECT id, timestamp, value from tbl;
SELECT `-` as id, (t1.timestamp+1) as timestamp, (t1.value + t2.value)/2 as value FROM tbl as t1 INNER JOIN tbl as t2 WHERE t1.timestamp +1 <> t2.timestamp AND t1.Id +1 = t2.Id;
# man kann mit union dann entsprechend die Ergebnisse vereinen
# Das muss aber irgendwie noch in einer Art Schleife gepackt werden oder so.
[/src]
Hat hier jemand einen Tipp für mich, wie ich das geschickt umsetzen kann? Bin ich darauf angewiesen alle x Sekunden / Minuten ein Skript laufen zu lassen, was fehlende Datensätze findet und berechnet/einfügt? Das muss doch auch irgendwie so gehen.
Grüße!