BiancaW: SQL Select

Hi
habe eine Frage zur richtigen Abfrage.

Gegeben:
eine Tabelle mit Spalte Messpunkt, Wert, DatumZeit
Aktuell sind in der Tabelle ca. 300.000 Zeilen mit Daten der letzen 2 Jahren.
Werte von ca 200 Messpunkten.

Gewünschtes Ergebnis:
Spalten = 5; Werte von 4 Messpunkten im Zeitraum DatumZeit x bis DatumZeit y
Werte von Messpunkt_1, Werte von Messpunkt_2, ..3, ..4, DatumZeit

Obwohl ich erst vor 3 Tagen die erste Select Anweisung gesehen haben bekomme ich das soweit hin.

Nun zu meinem Problem:
Die Messwerte werden nicht im gleichen Intervall in der Tabelle gespeichert. zB. Wert1 alle 60 Sek., Wert2 alle 300 sek, Wert3 alle 900 sek., Wert4 alle 300 sek.

DatumZeit Spalte der Ausgabe sollte den grössten Intervall haben. (im Beispiel eine Zeile pro 900 sek)

Die Werte mit kleinerem Intervall sollten in der Ausgabe den Durchschnitt innerhalb des grössten Intervalls bilden. (im Beispiel: Wert1 den Durchschnitt von 15 Werten pro Zeile)

hmm.. hoffe ich habe mich nicht nur für mich verständlich ausgedrückt
und es gibt hier jemanden mit einer Idee.

Schöne Grüsse
Bianca

  1. Hallo,

    habe eine Frage zur richtigen Abfrage.

    eine Tabelle mit Spalte Messpunkt, Wert, DatumZeit
    Aktuell sind in der Tabelle ca. 300.000 Zeilen mit Daten der letzen 2 Jahren.
    Werte von ca 200 Messpunkten.

    Gewünschtes Ergebnis:
    Spalten = 5; Werte von 4 Messpunkten im Zeitraum DatumZeit x bis DatumZeit y
    Werte von Messpunkt_1, Werte von Messpunkt_2, ..3, ..4, DatumZeit

    das sieht nach einem analogen Problem zu dem aus diesem Archivthread aus (mit ein paar kleinen Abweichungen :-)).

    Die Messwerte werden nicht im gleichen Intervall in der Tabelle gespeichert. zB. Wert1 alle 60 Sek., Wert2 alle 300 sek, Wert3 alle 900 sek., Wert4 alle 300 sek.

    DatumZeit Spalte der Ausgabe sollte den grössten Intervall haben. (im Beispiel eine Zeile pro 900 sek)

    die Spalte Lambda aus verlinktem Problem entspricht Deinem Intervall und Du willst statt des Messwertes den Durchschnitt, sprich verwende statt MAX() die Aggregatsfunktion AVG(), die Dein Datenbankmanagementsystem bestimmt kennt. Die Messreihe entspricht Deinem Messpunkt.

    Die Werte mit kleinerem Intervall sollten in der Ausgabe den Durchschnitt innerhalb des grössten Intervalls bilden. (im Beispiel: Wert1 den Durchschnitt von 15 Werten pro Zeile)

    bilde die Datumsspalte auf Einheiten des größten Intervalls ab, zum Beispiel mit

    Datum (am besten umgerechnet in UTC-Sekunden, um nicht Probleme mit der
        Sommerzeit zu bekommen) ganzzahlig dividiert durch das größte Intervall.

    Du kannst diese Spalte auch gern wieder in UTC-Zeit zurückrechnen, um lesbarere Werte zu bekommen, d.h. Du könntest von vornherein

    Datum - Datum Modulo (größtes Intervall) Sekunden

    rechnen. (Auch hier Sommerzeit berücksichtigen und daher am besten in UTC-Zeit rechnen).

    und nach dieser berechneten Spalte gruppieren (statt nach lambda).

    Freundliche Grüße

    Vinzenz

    1. Danke dir.
      Einen Schubser in die richtige Richtung und schon hat es geklappt.

      Liebe Grüsse
      Bianca