Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Mysql abfrage Produktion pro Jahr

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Mysql abfrage Produktion pro Jahr

    Hallo,
    Ich scheitere wieder an einer (sicheren einfachen) Abfrage.

    Ich habe in meiner Mysql Tabelle Zählerwerte (mwh,kwh,wh jeweils seperate spalten).
    der Zähler inkrementiert sich immer.
    Ich würde nun gerne eine Abfrage erstellen welche mir die Produktion pro Jahr ausgibt.

    max wert des Jahres - min wert jedes Jahres.

    ergebniss sollte:

    Jahr /Produktion1/Produktion2
    2014/1234/1234
    2013/2345/2345
    2012/3456/3456
    ....


    Querry welche ich für das aktuelle jahr verwende:

    Code:
    SELECT ((`Waermemengenzaehler Solar Waermemenge (mwh)`*1000) +`Waermemengenzaehler Solar Waermemenge (kwh)`+(`Waermemengenzaehler Solar Waermemenge (wh)`/1000))- (SELECT ((`Waermemengenzaehler Solar Waermemenge (mwh)`*1000) +`Waermemengenzaehler Solar Waermemenge (kwh)`+(`Waermemengenzaehler Solar Waermemenge (wh)`/1000)) FROM `Resol_Regler` WHERE year(`Zeit`)=year(Now()) ORDER BY `Zeit` asc Limit 1) as Waermemenge_Solar_Heuer, ((`Waermemengenzaehler Holzofen Waermemenge (mwh)`*1000) +`Waermemengenzaehler Holzofen Waermemenge (kwh)`+(`Waermemengenzaehler Holzofen Waermemenge (wh)`/1000))-(SELECT ((`Waermemengenzaehler Holzofen Waermemenge (mwh)`*1000) +`Waermemengenzaehler Holzofen Waermemenge (kwh)`+(`Waermemengenzaehler Holzofen Waermemenge (wh)`/1000)) FROM `Resol_Regler` WHERE year(`Zeit`)=year(Now()) ORDER BY `Zeit` asc Limit 1) as Waermemenge_Holzofen_Heuer FROM `Resol_Regler` WHERE year(`Zeit`)=year(Now()) ORDER BY `Zeit` desc Limit 1
    Könnte mir jemand bitte unter die Arme greifen.
    Ich bin in mysql nicht sattelfest

  • #2
    Zitat von tiego Beitrag anzeigen
    Ich würde nun gerne eine Abfrage erstellen welche mir die Produktion pro Jahr ausgibt.

    max wert des Jahres - min wert jedes Jahres.
    Ja, und warum nutzt du dann nicht MIN() und MAX() von SQL?
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      danke, wie grupiere ich das ich alle werte erhalte und nicht nur den letzten?

      Kommentar


      • #4
        gruppieren => GROUP BY
        Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

        Kommentar


        • #5
          Wer macht den sowas? So ein Query kann doch kein Mensch lesen. Ich hab jetzt gefühlt 20mal hin und her gescrollt bis ichs verstanden habe. Vielleicht solltest du erstmal die Datenbank normalisieren oder zumindestens ein View schreiben um den unsinn los zu werden:
          PHP-Code:
          (`Waermemengenzaehler Solar Waermemenge (mwh)`*1000) +`Waermemengenzaehler Solar Waermemenge (kwh)`+(`Waermemengenzaehler Solar Waermemenge (wh)`/1000
          Ansonsten wie lstegelitz sagt... YAER(Zeit), MIN(), MAX() und GROUP BY YEAR(zeit)

          Kommentar


          • #6
            Danke,

            meine Querry liefert aber ein Fehlerhaftes ergebniss:

            Code:
            SELECT YEAR(Zeit) as Jahr, (MAX(`Waermemengenzaehler Solar Waermemenge (mwh)`*1000) +`Waermemengenzaehler Solar Waermemenge (kwh)`+(`Waermemengenzaehler Solar Waermemenge (wh)`/1000)
             - MIN(`Waermemengenzaehler Solar Waermemenge (mwh)`*1000) +`Waermemengenzaehler Solar Waermemenge (kwh)`+(`Waermemengenzaehler Solar Waermemenge (wh)`/1000)) as Produktion 
            FROM `Resol_Regler` GROUP BY YEAR(zeit)
            Kann sein das er innerhalb von MAX nicht rechnen kann?
            Besteht die möglichkeit die Werte auszulesen im zusangenhang mit der Zeit?

            Kommentar


            • #7
              MIN und MAX ermitteln nur den niedrigsten bzw. höchsten Wert einer Gruppe von Werten.

              Deine Berechnungen (im Ausgangspost) werden aber pro Datensatz durchgeführt - die gleiche Berechnung mit min/max funktioniert so nicht, denn die min/max Werte stehen höchstwahrscheinlich in unterschiedlichen Zeilen.

              Du solltest dir erstmal darüber klarwerden, was du überhaupt genau erreichen willst!
              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

              Kommentar


              • #8
                Danke,

                mei Ziel wäre es denn letzten wer jedes Jahres mit den ersten wert jedes Jahres gegenzurechen um die Produktion des Jahres herauszufinden.

                z.B.
                Zeit: Mwh kWh Wh
                31.12.12 2 12 5
                01.01.12 1 11 1
                Ergebniss 1001,004

                Sorry wenn Ich mich nicht verständlich ausgedrückt habe

                Kommentar


                • #9
                  Zitat von tiego Beitrag anzeigen
                  Kann sein das er innerhalb von MAX nicht rechnen kann?
                  Besteht die möglichkeit die Werte auszulesen im zusangenhang mit der Zeit?
                  Doch, aber deine Klammern sind flasch. Du ermittelst zurzeit den maximalen/minimalen mwh Werte des Jahres und addierst zu diesen Werten die kwh und wh eines quasi zufälligen Datensatzes. (Soviel zum Thema Normalisierung) Richtig wäre so MAX(mwh+kwh+wh) - MIN(mwh+kwh+wh)

                  Kommentar


                  • #10
                    Dann ist aber auch das GROUP BY falsch, es sollen ja nur die Werte vom Anfang bzw. Ende des Jahres berechnet werden.
                    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                    Kommentar


                    • #11
                      Zitat von lstegelitz Beitrag anzeigen
                      Dann ist aber auch das GROUP BY falsch, es sollen ja nur die Werte vom Anfang bzw. Ende des Jahres berechnet werden.
                      Nein, ist korrekt so. Ein Energiezähler zählt immer nur in eine Richtung, daher ist MIN() der erste Wert im jeweiligen Zeitraum und MAX() der letzte.

                      Kommentar


                      • #12
                        Danke Danke

                        Nach langen hin und her habe Ich mit eurer hilfe mein Ziel erreicht.

                        nochmals Vielen dank

                        Kommentar

                        Lädt...
                        X