Ankündigung

Einklappen
Keine Ankündigung bisher.

SQL - Berechnung von Datensätzen

Einklappen

Neue Werbung 2019

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

  • SQL - Berechnung von Datensätzen

    Hallo
    Ich hänge wiedermal an einer SQL Abfrage fest.

    Meine Tabelle:

    Zeitpunkt;Sensor;Temperatur
    2018-10-27 14:18:30;Sensor1;45
    2018-10-27 14:18:30;Sensor2;40
    2018-10-27 14:18:32;Sensor1;46
    2018-10-27 14:18:32;Sensor2;40
    2018-10-27 14:18:34;Sensor1;48
    2018-10-27 14:18:34;Sensor2;41

    Ziel ist, zu jedem Zeitpunkt die Differenz zwischen Sensor1 und Sensor2 zu bekommen.
    Lässt sich das mit einer einzelnen Abfrage realisieren?

    lg

  • #2
    Bitte auch immer ein SQL Dump mit Beispieldaten zur Verfügung stellen oder erstelle ein sql Fiddle.

    Kommentar


    • #3
      Hier die Beispiel Daten
      http://sqlfiddle.com/#!9/7b6990

      Kommentar


      • #4
        Hier hast du eine Lösung für Mysql

        Code:
        SELECT S1.Zeitpunkt, S2.Temperatur AS Sensor1, S1.Temperatur AS Sensor2, S2.Temperatur - S1.Temperatur AS tempDiff
        FROM `sensor` S1
        JOIN `sensor` S2 ON S1.`Zeitpunkt` = S2.`Zeitpunkt`
        AND S1.Sensor <> S2.Sensor
        GROUP BY `Zeitpunkt`
        http://sqlfiddle.com/#!9/7b6990/3

        Kommentar


        • #5
          Das sieht gut aus. In der Tabelle wird es noch weitere Sensoren geben. Wie kann ich 2 Sensoren als Bedingung angeben?

          Ich habe die Beispieldaten um 2 weitere Sensoren ergänzt:
          http://sqlfiddle.com/#!9/3dc0e2/1

          Kommentar


          • #6
            Willst du uns auf den Arm nehmen?
            Was kommt als nächstes?

            Bitte komplettes Vorhaben auf ein mal zeigen und nicht kleckerweise mit den Infos heraus rücken.

            Jetzt versuch das erst mal selber.
            Mein Tipp ist CASE ... ENDCASE

            Kommentar


            • #7
              Sorry, habe das im ersten Posting nicht deutlich geschrieben. Das Ziel ist bei 2 beliebigen Sensoren aus der Tabelle die Differenz zu erhalten.

              Kommentar


              • #8
                Da ich nur die Basics von SQL kenne, hab ichs mal so versucht:

                SELECT S1.Zeitpunkt, S2.Temperatur AS Sensor1, S1.Temperatur AS Sensor2, S2.Temperatur - S1.Temperatur AS tempDiff
                FROM `sensor` S1
                JOIN `sensor` S2 ON S1.`Zeitpunkt` = S2.`Zeitpunkt`
                AND S1.Sensor = 'Sensor3' AND S2.Sensor = "Sensor4"
                GROUP BY `Zeitpunkt`
                Ergebnis sieht gut aus.

                Gibt es einen Grund das anders zu lösen?

                Kommentar


                • #9
                  Kommt darauf an, was du alles daraus basteln willst.

                  Du kannst dir auch die Temperaturen zeilenweise zusammen bauen und die Differrenzen dann in PHP auswerten.
                  Code:
                  SELECT
                      `Zeitpunkt` ,
                      SUM(CASE Sensor WHEN 'Sensor1' THEN Temperatur END ) AS T1,
                      SUM(CASE Sensor WHEN 'Sensor2' THEN Temperatur END ) AS T2,
                      SUM(CASE Sensor WHEN 'Sensor3' THEN Temperatur END ) AS T3,
                      SUM(CASE Sensor WHEN 'Sensor4' THEN Temperatur END ) AS T4
                  FROM
                      `sensor`
                  GROUP BY
                      Zeitpunkt
                  http://sqlfiddle.com/#!9/3dc0e2/4

                  Kommentar


                  • #10
                    Das ist auch ein interesanter Ansatz.
                    Das Resultat wird als array für die Darstellung einer Kurve (d3.js) benötigt.

                    Kommentar


                    • #11
                      Mach was draus.

                      Kommentar


                      • #12
                        jo, danke dir für deine Hilfe.

                        Kommentar

                        Lädt...
                        X