0

我想看看这周股票的价格是否变化了 5%。我有每天捕捉价格的数据。我可以通过执行以下操作获取过去 7 天的行:

select price from data where date(capture_timestamp)>date(current_timestamp)-7;

但是,我该如何分析,看看价格是上涨还是下跌了 5%?是否可以使用一条 sql 语句完成所有这些操作?我希望能够将它的任何结果插入到一个新表中,但我只想专注于首先在 shell 中打印出来。

谢谢。

4

2 回答 2

1

在名为 data 的表中只有一只股票似乎很奇怪。您需要做的是将上周和今天的值的两行放在一起,如以下查询所示:

select d.price
from data d cross join
     data dprev
where cast(d.capture_timestamp as date = date(current_timestamp) and
      cast(dprev.capture_timestamp as date) )= cast(current_timestamp as date)-7 and
      d.price > dprev.price * 1.05

如果数据表包含股票代码,则交叉联接将是等值联接。

于 2012-05-12T17:22:33.623 回答
0

您可以使用来自以下子查询的查询来进行您想要执行的任何计算。这是假设每天一条记录。前 7 行是文字。

SELECT ticker, price, capture_ts
      ,MIN(price) OVER (PARTITION BY ticker ORDER BY capture_ts ROWS BETWEEN 7 PRECEDING AND CURRENT ROW) AS min_prev_7_records
      ,MAX(price) OVER (PARTITION BY ticker ORDER BY capture_ts ROWS BETWEEN 7 PRECEDING AND CURRENT ROW) AS max_prev_7_records
  FROM data
于 2012-05-12T18:50:21.330 回答