Hallo,
ich habe eine Abrage in der ich den vorletzten, letzten und folgenden Wert aus der DB auslese.
Funktioniert auch, nur in einzelnen Zeilen wird der vorletzte und folgende Datensatz an ganz falscher Stelle geholt.
Meine Abfrage lautet:
SELECT
variablen.id,
variablen.varid,
variablen.updatezeit,
lag (variablen.value) over(),
variablen.value,
lead (variablen.value) over(),
variablen.value - lag (variablen.value) over() as diff,
lag (variablen.value) over() + ((lead (variablen.value) over() - lag (variablen.value) over()) / 2) as new
FROM
public.variablen
WHERE variablen.varid = 48020
ORDER BY
variablen.varid ASC;
als Ausgabe bekomme ich folgendes:
id varid updatezeit lag value lead diff new
24466 48020 09.03.2014 23:30 928,03 928,11 928,2 0,0799561 928,1150208
25575 48020 09.03.2014 23:45 928,11 928,2 928,28 0,0900269 928,1950073
26723 48020 10.03.2014 00:00 928,2 928,28 1107,51 0,0800171 1017,855011
27734 48020 10.03.2014 00:15 1564,65 928,29 1564,72 -636,36 1564,684998
28818 48020 10.03.2014 00:30 1568,83 928,44 928,5 -640,39 1248,664978
29863 48020 10.03.2014 00:45 928,44 928,5 928,57 0,0599976 928,5050049
30949 48020 10.03.2014 01:00 928,5 928,57 928,65 0,0700073 928,5750122
Die falschen Werte sind z.B. hier zufinden:
1819076 48020 1107,51 25.03.2014 20:00
8911848 48020 1564,65 04.06.2014 19:00
8913143 48020 1564,72 04.06.2014 19:15
8964939 48020 1568,83 05.06.2014 06:30
Kann mir jemand sagen was hier falsch ist?
Schöne Grüße
Thomas