【问题标题】:Using quarterly data on daily data in sql在sql中对每日数据使用季度数据
【发布时间】:2021-04-14 18:17:11
【问题描述】:

我正在尝试对每日股价及其财务报表进行一些特征工程。

如果stock_price 表的列看起来像这样,行每天都在更新。

OPEN | HIGH | LOW | CLOSE | VOL | DATE
1    | 3    | 0.8 | 1.2   | 5   | 2020-10-1
1.2  | 1.3  | 1   | 1.28  | 3   | 2020-10-2
1.4  | 2.1  | 1.4 | 2.0   | 5   | 2020-10-3
...
0.9  | 1.3  | 0.7 | 1     | 3   | 2021-1-8
1.2  | 1.5  | 1   | 1.4   | 3   | 2021-1-9

financial_statements 表列如下所示

REVENUE | EPS | PUBLISHED_DATE
0.8     | 0.8 | 2020-7-1           < Q2 data
1       | 1   | 2020-10-2          < Q3 data
1.6     | 1.6 | 2021-1-9           < Q4 data

那我想要这个

OPEN | HIGH | LOW | CLOSE | VOL | DATE       | REVENUE_X_10
1    | 3    | 0.8 | 1.2   | 5   | 2020-10-1  | 8
1.2  | 1.3  | 1   | 1.28  | 3   | 2020-10-2  | 10        < Q3 statement published this day
1.4  | 2.1  | 1.4 | 2.0   | 5   | 2020-10-3  | 10
...                                                      < all these rows use Q3 data
0.9  | 1.3  | 0.7 | 1     | 3   | 2021-1-8   | 10        
1.2  | 1.5  | 1   | 1.4   | 3   | 2021-1-9   | 16        < Q4 statement published this day

这在 MySQL 中可行吗?

【问题讨论】:

  • 向我们展示一些示例数据、预期输出和您正在使用的数据库。不是每个人都知道市盈率这个词。因此,请在您的问题中明确逻辑。我投票结束这个问题。如果您将使用所需的详细信息更新问题,那么我将撤回我的投票并尝试回答您的问题。
  • 刚刚编辑了问题。谢谢你的建议。我还没有数据。只是编了一些。希望这足够清楚。

标签: mysql sql time-series


【解决方案1】:

我认为你只需要一个相关的子查询:

select sp.*,
       (select fs.revenue * 10
        from financial_statements fs
        where fs.published_date <= sp.date
        order by fs.publichsed_date desc
        limit 1
       ) as fs_revenue_times_10
from stock_price sp

【讨论】:

  • @MonSh1rE 。 . .我不知道为什么在此查询中未使用 inallany 时会出现该错误。
  • 我在谈论另一个查询,但 nvm。当我将它与查询一起粘贴时,我会得到“EXPECTING EOF”。是 LIMIT 关键字吗?我正在使用 mysql 顺便说一句。
  • @MonSh1rE 。 . .代码语法正确:dbfiddle.uk/…。它有效。
  • 谢谢。我明天试试。我是 mysql 的菜鸟,也许我先做错了。
猜你喜欢
  • 2012-06-08
  • 1970-01-01
  • 2020-01-20
  • 2017-03-26
  • 1970-01-01
  • 2018-12-20
  • 1970-01-01
  • 2019-12-23
  • 1970-01-01
相关资源
最近更新 更多