【发布时间】:2020-11-29 17:54:07
【问题描述】:
我想测试一些股票交易策略,并试图弄清楚我可以多么容易地使用 SQL (mySQL) 创建计算字段,而不是像以前那样使用 Python 使用 MongoDB。
我有大约 3,000 个股票代码的 5 年数据,我希望能够根据需要进行试验和设置其他列。这对于 Python/MongoDB 来说可能是一个相当缓慢的过程,而 pandas 在逐个代码的基础上计算和设置值方面非常直观,我想如果我能在SQL(我真的需要在 SQL 方面做得更好)。 SQL 的体积也比 MongoDB 小,而且我最终可能会得到大量的计算字段。
具体来说,我必须执行以下操作:
- 根据表中不同的股票代码值创建一个数组。
- 遍历数组并按股票代码执行。
- 每个循环只需要选择与每个代码相关的行,然后执行需要引用多行的计算(例如,可以通过查找连续行上两个“关闭”字段之间的百分比变化来计算“更改”字段.
我在这里发现了一些表明我可以做 #3 的事情:SQL difference between rows
我想我只需要更改该查询以仅选择某个股票代码,但我真的不确定我是否可以执行 #1 和 #2。我看到我可以创建一个数组,但我不确定如何为数据库中的唯一值动态地执行此操作。对于#2,我发现可以创建while 循环,但不能创建for 循环(尽管可能有一些方法可以将while 循环用作for 循环)。
我想如果我获得第一名,我可以得到其余的,但任何建议都会受到赞赏。还有任何关于在 SQL 中执行此操作是否有意义的一般反馈。
【问题讨论】:
-
您可能可以在 SQL 中做您想做的事,但不是您描述的方式。首先,MySQL 没有原生的“数组”数据类型。它根本不是语言的一部分。我建议你问一个新的问题。提供样本数据、期望的结果以及您想要记住的一两个或三个代表性计算的解释。这将提供如何在 SQL 中表达逻辑的示例。
-
我想我可以得到不同代码的计数,找到与循环迭代对应的第 n 个代码,并相应地执行计算。知道这在速度方面与 Python 相比如何吗?
-
因为 python 是最慢的语言之一,所以除非你做的事情非常低效,否则它总是比 python 快....
-
我用逗号分隔值的字符串代替了真正的数组,它就是这样工作的。我仍然需要添加上面 #3 中提到的行迭代计算来测试速度方面。