SQL: "vollständige Matrix" selektieren

Grall

Neuer Benutzer
Beiträge
2
Hallo zusammen,

ich habe eine Tabelle mit drei Spalten:

Minute [nat. Zahl] | Datum | Wert [reelle Zahl]

Als Eingabedateien für nachfolgende Programme benötige ich das folgende Ausgabeformat:

Minute;Datum;Wert

Beispiel:
0;2014-01-01;564
0;2014-01-02;12
1;2014-01-01;0
1;2014-01-02;84
2;2014-01-01;21
2;2014-01-02;48


Dabei muß allerdings jede Minute genau einmal aufgeführt werden - d.h. auch Minuten, zu welchen keine Meßwerte vorliegen. Dort soll dann Datum mit dem "aktuellen" Datum (d.h. das Datum des aktuellen Blocks) und Wert mit "0" befüllt werden. Bei mehrfachen Meßwerten pro Minute soll das arithmetische Mittel als Wert ausgegeben werden.

Also im Grunde brauche ich:

SELECT Minute, Datum, SUM(Wert)/COUNT(*) FROM Tabelle GROUP BY Minute, Datum

Wobei hier die Minuten ohne Meßwerte fehlen.

Gibt es eine Möglichkeit, das irgendwie elegant zu lösen? Kann man in der SELECT-Anweisung z.B. irgendwie eine Schleife einbauen? Die Minuten könnte man fix im Bereich (0, 1440) vorgeben. Hauptsache die Matrix ist vollständig.
 
Werbung:
mein Ansatz (in PostgreSQL) wäre gegen eine via generate_series() - erzeugte Tabelle zu joinen, die exakt alle nötigen timestamps enthält. Ob das in sqllite geht weiß ich nicht ...
 
Du kannst auch alle Zeitkombinationen in einer Hilfstabelle speichern. Dann machst du einen Full Join zwischen allen Tagen und allen Zeiten und joinst dort per Left Join die vorhanden Datensätze.
 
Werbung:
Zurück
Oben