Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Werte vor X Tagen ermitteln

Dieses Thema im Forum "Oracle" wurde erstellt von Jumper512, 1 Juni 2016.

  1. Jumper512

    Jumper512 Benutzer

    Hallo.

    ich habe eine Tabelle mit den Spalten Datum, Wert X.

    Ich möchte nun für einen Zeitraum von 26 Tagen den Durchschnitt errechen und noch eine Schleifen Berechnung mit jedem Wert.

    Wie kann ich den Wert von vor 26 Tagen selektieren. Dabei ist wichtig, dass nur die Werktage enthalten sind. Außerdem können auch vereinzelt Tage fehlen.

    Beispiel:
    15.04.2016
    14.04.2016
    13.04.2016
    12.04.2016
    11.04.2016
    08.04.2016
    07.04.2016
    06.04.2016
    05.04.2016
    04.04.2016
    01.04.2016
    31.03.2016
    30.03.2016
    29.03.2016
    28.03.2016
    25.03.2016
    24.03.2016
    23.03.2016
    22.03.2016
    21.03.2016
    18.03.2016
    17.03.2016
    16.03.2016
    15.03.2016
    14.03.2016

    Ich sage in SQL selektiere den Wert vom 15.04.2016 und verrechne den Wert mit dem von vor 26 Tagen( also vom 14.03.2016). Es sind also keine wirklichen 26 Tage , sondern nur 26 Tage unter den vorhandenen Datensätzen.
     
  2. akretschmer

    akretschmer Datenbank-Guru

    Row_number() ?
     
    Jumper512 gefällt das.
  3. ukulele

    ukulele Datenbank-Guru

    Wenn ich das richtig verstehe ginge das auch mit lag() und offset = 26. Bei deinen gezeigten Datensätzen gäbe es für den 15.04.2016 aber nur 23 Vortage. Vieleicht raffe ich aber auch absolut nicht was du machen willst.
     
    Jumper512 gefällt das.
  4. Jumper512

    Jumper512 Benutzer

    Okay, das mit ROW_Number war ziemlich gut. Ich kann mir also abhängig vom gewählten Tag x die vorherigen 26 Werte anzeigen lassen. aber wie kann ich dann von diese 26 Werten einen bestimmten ansprechen? Ich möche da ja später eine Schleife erstellen, die immer den vorherigen Wert verarbeitet und sich dann selber ändert. Immer so weiter bis zum Tag x.
    Als Formel in etwa:
    x(t) = y - x(t-1) * p +x(t-1) t= Tag
    Der letzte Wert von den 26 soll x(t) = y sein. Y ist immer ein Wert in der Tabelle.
    Am Ende möchte ich dann nur den X(t) für den ausgewählten Tag haben.
    Irgendwelche Ideen, wie ich das am besten angehen kann?
     
  5. akretschmer

    akretschmer Datenbank-Guru

    lead() und lag() sind hier Deine Freunde. Window-Funktionen halt ganz allgemein.
     
    Jumper512 gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden