SQL - 计算列
SQL - Calculated Column
我有一个 table,它向我显示股票行情,asofdate,开盘,收盘。
我创建了一个名为每日 PL 的计算列,它只是每日收盘价。
,(close-open) AS daily_pl
我无法弄清楚使用第一个 asofdate
中的 {open}
和最近的 asofdate
中的 {close}
的逻辑。 table 会自然增长,所以逻辑需要是动态的。见下文:
您可以使用 window 功能。我认为 first_value()
做你想做的事——获得股票代码的第一个 open
价格:
select j.*,
(close - first_value(open) over (partition by ticker order by asofdate) as daily_pl
from jandata j;
如果您只想在结果集中为每个行情显示一行,那么您可以使用:
select distinct ticker,
(first_value(close) over (partition by ticker order by asofdate desc) -
first_value(open) over (partition by ticker order by asofdate)
)
from jandata;
我有一个 table,它向我显示股票行情,asofdate,开盘,收盘。 我创建了一个名为每日 PL 的计算列,它只是每日收盘价。
,(close-open) AS daily_pl
我无法弄清楚使用第一个 asofdate
中的 {open}
和最近的 asofdate
中的 {close}
的逻辑。 table 会自然增长,所以逻辑需要是动态的。见下文:
您可以使用 window 功能。我认为 first_value()
做你想做的事——获得股票代码的第一个 open
价格:
select j.*,
(close - first_value(open) over (partition by ticker order by asofdate) as daily_pl
from jandata j;
如果您只想在结果集中为每个行情显示一行,那么您可以使用:
select distinct ticker,
(first_value(close) over (partition by ticker order by asofdate desc) -
first_value(open) over (partition by ticker order by asofdate)
)
from jandata;