私はPostgreSQLを初めて使用し、ここで関数を書くのは非常に困難です。だから、誰かが私がやろうとしていることをする方法を教えてくれることを願っています.
株価と日付の表があります。各エントリの前日からの変化率を計算したいと思います。データの最も早い日の場合、前日がないため、エントリは単純に Nil になります。誰かが私の関数を調べて、 a)
次の行からデータを参照する方法と
b) クリーンアップを手伝ってくれませんか?
WITH
ステートメントがステートメントの上にあるはずがないことは承知していIF
ます。しかし、論理的には、これが私がこれまで考えてきた方法であり、したがって私がそれを書いた方法です。それがどのように見えるべきかアドバイスできれば、それも非常にありがたいです。
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。