我是 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。