Window-Funktion und Variablen

PVbeiNacht

Benutzer
Beiträge
14
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
 
Werbung:
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.
 
Zurück
Oben