如何从SQL中获取以下股票信息?
假设我有以下表列如何从SQL中获取以下股票信息?,sql,postgresql,Sql,Postgresql,假设我有以下表列 日期 时间 保安 交易价格 对于每个日期,我希望获得在该特定日期交易的每种证券的第一个和最后一个交易价格。如何在SQL中实现这一点 试试看 Select Coalesce(f.Security, l.Security) security. Coalesce(f.Date, l.Date) Date, f.TradePrice firstPrice, l.TradePrice lastPrice From table f Ful
- 日期
- 时间
- 保安
- 交易价格
Select Coalesce(f.Security, l.Security) security.
Coalesce(f.Date, l.Date) Date,
f.TradePrice firstPrice,
l.TradePrice lastPrice
From table f Full Join table l
On f.Security = l.Security
And f.Date = l.Date
And f.time = (Select Min(Time)
From table
Where Security = f.security
And Date = f.Date)
And l.Time = (Select Max(Time)
From table
Where Security = l.security
And Date = l.Date)
试一试
Postgresql的窗口函数提供了几种获取所需内容的方法。我还没有充分使用它们来知道哪一个(如果有的话)轻微的变体是最好的优化,但有一个版本是最好的
SELECT dt, sec, t0, p0, t1, p1 FROM
(
SELECT dt, sec, first_value(tm) over date_window as t0,
first_value(price) OVER date_window AS p0,
last_value(tm) OVER date_window AS t1,
last_value(price) OVER date_window AS p1,
rank() OVER date_window AS r
FROM a
WINDOW date_window AS (PARTITION BY dt, sec ORDER BY tm
RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
) AS subquery
WHERE r=1;
我已经更改了字段名以避免保留字。Postgresql的窗口函数提供了几种获取所需内容的方法。我还没有充分使用它们来知道哪一个(如果有的话)轻微的变体是最好的优化,但有一个版本是最好的
SELECT dt, sec, t0, p0, t1, p1 FROM
(
SELECT dt, sec, first_value(tm) over date_window as t0,
first_value(price) OVER date_window AS p0,
last_value(tm) OVER date_window AS t1,
last_value(price) OVER date_window AS p1,
rank() OVER date_window AS r
FROM a
WINDOW date_window AS (PARTITION BY dt, sec ORDER BY tm
RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
) AS subquery
WHERE r=1;
我已更改字段名以避免保留字。Postgres。我不知道从哪里开始。我不知道从哪里开始