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

Window-Funktion und Variablen

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von PVbeiNacht, 4 März 2020.

  1. PVbeiNacht

    PVbeiNacht Benutzer

    Die Zuweisung einer Variable funktioniert nicht und ich kann mir keinen Reim daraus machen:
    Code:
    SET @sum = 0.0;
    SET @zwi = 0.0;
    SELECT *,
        val AS VALUE,
        @zwi := (ts - (lag(ts) over (ORDER BY ts))) * val/1000 AS WS,
        @zwi AS Zwischen
    FROM ts_number
    WHERE id=23
    ORDER BY ts DESC
    LIMIT 10
    Ich will das Ergebnis der Berechnung der Variable @zwi zuweisen aber als Ergebnis kommt entweder 'NULL' oder irgendein beliebiger Wert - nach jedem Durchlauf ein anderer.
    Ziel ist, die Ergebnisse der Zeile 5 aufzusummieren.
    Hier meine Ergebnisse:
    PHP:
    id     ts              val   ack  _from q   kwh     VALUE WS         Zwischen
    23    1583310286398    57    1    2    0    NULL    57    235.638    238.95999999999998
    23    1583310282264    58    1    2    0    NULL    58    119.248    238.95999999999998
    23    1583310280208    57    1    2    0    NULL    57    592.629    238.95999999999998
    23    1583310269811    58    1    2    0    NULL    58    120.292    238.95999999999998
    23    1583310267737    59    1    2    0    NULL    59    121.481    238.95999999999998
    23    1583310265678    56    1    2    0    NULL    56    116.312    238.95999999999998
    23    1583310263601    59    1    2    0    NULL    59    487.281    238.95999999999998
    23    1583310255342    58    1    2    0    NULL    58    119.248    238.95999999999998
    23    1583310253286    59    1    2    0    NULL    59    243.021    238.95999999999998
    23    1583310249167    58    1    2    0    NULL    58    119.422    238.95999999999998
    Ich verwende MariaDB10.3.2
     
  2. dabadepdu

    dabadepdu Datenbank-Guru

    Mal für den Anfang:
    Summen o.ä. nennt man Aggregationen.
    SUM(<expression>) berechnet die Summe über die Expression. Dafür benötigt man in aller Regel keine Variablen. Variablen in dieser Form gibt es überhaupt nur in mysql/maria und sie werden hauptsächlich als Krücke genutzt, um workarounds für andere wichtige, aber fehlende Funktionen zu bauen.

    Bentutze für die Summierung die Funktion sum() und verwende Group By, um nicht summierte Spalten aus der Select Clause zu gruppieren.
     
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