私は次のようなテーブルを持っています:
ティッカー、日付、Open_Price、Close_Price
何百ものティッカーが含まれています。ギャップと呼ばれる別の計算列を追加したいと思います。これはOpen_price-昨日の終値です。各行(つまり、各ティッカー、毎日)
誰かがSQLを手伝ってくれませんか?
ありがとうスティーブ
私は次のようなテーブルを持っています:
ティッカー、日付、Open_Price、Close_Price
何百ものティッカーが含まれています。ギャップと呼ばれる別の計算列を追加したいと思います。これはOpen_price-昨日の終値です。各行(つまり、各ティッカー、毎日)
誰かがSQLを手伝ってくれませんか?
ありがとうスティーブ
SQLの多くの方言で機能する方法は次のとおりです。
select t.*, open_price - lastclose as gap
from (select t.ticker, t.date, t.open_price, t.close_price,
(select t.close_price from t t2 where t2.ticker = t.ticker and t2.date < t.date order by DATE desc limit 1
) as lastclose
from t
) t
SQLのフレーバーに応じて、limit 1
またはselect top 1
またはwhere rownum = 1
。。。他のいくつかの可能性さえ。
これは、相関サブクエリを使用してlag()
関数をエミュレートします。これは本当に必要なものです。あなたがこれを持っているなら、あなたは書くことができます:
select t.*, open_price - lastclose as gap
from (select t.ticker, t.date, t.open_price, t.close_price,
lag(close_price) over (partition by ticker order by date) as lastclose
from t
) t