Ankündigung

Einklappen
Keine Ankündigung bisher.

Erster und letzter Datensatz von Abfrage

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Erster und letzter Datensatz von Abfrage

    Hallo zusammen

    Bin ein Neuling und habe schon ein erstes Problem

    In einer Tabelle werden der Energieverbrauch einer Anlage gespeichert.
    Da die Werte von einem Energiezähler kommen, sind diese Eintrage aufsteigend.

    Ich möchte eine Abfrage erstellen, wo ich die Differenz zwischen dem ersten Eintrag (Datumsabfrage) und letztem Eintrag (Datumsabfrage) erhalte
    um den Energieverbrauch über einen bestimmten Zeitraum zu erhalten

    Diese Abfrage funktioniert soweit, wie erhalte ich nun aber den ersten, bzw. den letzten Wert? - Die Differenz könnte ich dann ja ausserhalb berechnen.
    SELECT Datum, Energieverbrauch FROM tblEnergieventil WHERE Datum >= '" . $DatumVon . "' AND Datum <= '" . $DatumBis . "' ORDER BY Datum";


    Vielen Dank zum voraus


    Gruss
    Thomas


  • #2
    Kann Deine Datenbank Window-Funktionen? Falls ja, könntest Du mittels lag() - Funktion immer die Differenz des aktuellen Datensatzes zur vorherigen ermitteln. Oder andere Dinge, wie auch die Differenz zwischen dem letzten und dem ersten Datensatz im Ergebniss, Durchschnittswerte und so weiter...
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      Group by, min, max
      Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

      Kommentar


      • #4
        Order by und Group by braucht man nicht wenn man nur den Verbrauch haben will.

        Beispiel:
        Code:
        SELECT min( `kwh` ) , max( `kwh` ) , max( `kwh` ) - min( `kwh' ) AS Verbrauch
        FROM `tblEnergieventil
        WHERE `datum` BETWEEN "2014-10-20" AND "2014-10-22"
        Ergebnis ist dann so ähnlich wie
        Code:
        min(`kwh`)  max(`kwh`)  verbrauch     
        ---------------------------------
        1016        1025        9

        Kommentar


        • #5
          Zitat von protestix Beitrag anzeigen
          Order by und Group by braucht man nicht wenn man nur den Verbrauch haben will.
          Also ja, das geht, wenn man nur Aggregate ausgibt, braucht man kein Group By, nirgendwo.
          In Anbetracht der fortwährenden Probleme, die mit / ohne Group by und mysql auftreten könnte man das noch etwas erläutern, sonst kriegt es wieder die Hälfte der Leser in den falschen Hals.

          Derartige Statements, die zum Aggregat keine Gruppe oder Bedingung liefern (durch Feldnamenalias oder weitere Spalten), halte ich auch für nicht erstrebenswert, weil der Kontext verloren geht.

          Das Group By wegzulassen ist letztlich auch aus Performancegründen idR eher nicht relevant, da die Hauptarbeit meist durch das Aggregieren entsteht.
          Wenn unbedingt was weglassen (weil tiefer, schneller, breiter) dann lieber das "missbrauchte" Aggregat, dazu wäre in diesem Fall tatsächlich dann eine Window Function ideal!

          Kommentar

          Lädt...
          X