Durchlaufen PostgreSQL-Datensätze. Wie Referenzdaten aus der nächsten Zeile?

Ich bin neu in PostgreSQL und schreiben von Funktionen ist hier knallhart. So ich hoffe jemand kann helfen, lassen Sie mich wissen, wie zu tun, was ich versuche zu tun.

Habe ich eine Tabelle Kurse und Termine. Ich will berechnen Sie die prozentuale Veränderung gegenüber dem vorherigen Tag für jeden Eintrag. Für die früheste Tag Daten gibt es nicht einen Tag zuvor, so dass Eintrag kann einfach Null. Kann jemand sich über meine Funktion und helfen mir mit

a) wie Referenz-Daten aus der nächsten Zeile und

b) mir helfen, es sauber?

Ich bin mir bewusst, dass die WITH Aussage ist wohl nicht, soll über die IF - Anweisung. Aber logisch, das ist, wie ich gedacht habe, über das es bisher und so, wie ich geschrieben habe. Wenn Sie beraten könnte, wie das Aussehen soll, es wäre sehr geschätzt werden, wie gut.

CREATE FUNCTION percentage_change_func(asset_histories) RETURNS 
numeric LANGUAGE sql IMMUTABLE AS $func$

DECLARE
r asset_histories%rowtype
BEGIN   
WITH twodaysdata AS (SELECT date,price,asset_symbol FROM asset_histories 
           WHERE asset_symbol = $1.asset_symbol 
           AND asset_histories.date <= $1.date 
           ORDER BY date DESC LIMIT 2), 
         numberofrecords AS (SELECT count(*) FROM twodaysdata) 

IF numberofrecords = 2 THEN
        RETURN r.price / (r+1).price - 1  <---How do I reference r + 1??/
ELSE
        RETURN NIL
ENDIF
END
$func$

PostgreSQL 9.2.

InformationsquelleAutor Terence Chow | 2013-03-30

Schreibe einen Kommentar