我想看看这周股票的价格是否变化了 5%。我有每天捕捉价格的数据。我可以通过执行以下操作获取过去 7 天的行:
select price from data where date(capture_timestamp)>date(current_timestamp)-7;
但是,我该如何分析,看看价格是上涨还是下跌了 5%?是否可以使用一条 sql 语句完成所有这些操作?我希望能够将它的任何结果插入到一个新表中,但我只想专注于首先在 shell 中打印出来。
谢谢。
我想看看这周股票的价格是否变化了 5%。我有每天捕捉价格的数据。我可以通过执行以下操作获取过去 7 天的行:
select price from data where date(capture_timestamp)>date(current_timestamp)-7;
但是,我该如何分析,看看价格是上涨还是下跌了 5%?是否可以使用一条 sql 语句完成所有这些操作?我希望能够将它的任何结果插入到一个新表中,但我只想专注于首先在 shell 中打印出来。
谢谢。
在名为 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
如果数据表包含股票代码,则交叉联接将是等值联接。
您可以使用来自以下子查询的查询来进行您想要执行的任何计算。这是假设每天一条记录。前 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