gpt4 book ai didi

mysql - 滞后表列的通用存储过程

转载 作者:行者123 更新时间:2023-11-29 22:10:59 24 4
gpt4 key购买 nike

我需要计算不同频率的返回。为此,我希望能够将列中的值滞后 k 个单位。虽然我找到了不同的具体解决方案,但我无法制作通用的存储过程(很可能是由于我对 mysql 缺乏经验)。我怎样才能最好地做到这一点?

我有一个包含多列的表,其中包含以下信息的列:

  • 身份证
  • 日期
  • 价格

最终结果应该是一个包含所有原始列的表格,加上包含价格滞后值的列。

为了保持该过程的通用性,我可以想象该过程会将表名称、必要的列名称(例如 ID、日期、价格)和滞后数 k 作为输入,并附加列到表中。

最佳答案

您可以使用相关子查询执行您想要的操作。这是一个例子:

select t.*,
(select t2.price
from <tablename> t2
where t2.date < t.date
order by date
limit 1 offset 1 -- change the offset for a bigger lag
) as price_lag_1
from <tablename> t;

您创建通用存储过程的愿望不太适合 SQL。 MySQL 不支持表值函数,因此您无法将结果表用作实际表。

如果您想将其放入通用存储过程中,则需要动态 SQL 来使用传入的特定表和列来构造 SQL 语句。

相反,我建议您简单地学习如何以查询的形式表达您想要的内容。如果您有多个具有相同结构的表,那么您可能需要重新访问您的数据模型。拥有多个相似的表通常是实体不恰本地分布在太多表中的一个示例。

关于mysql - 滞后表列的通用存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31674252/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com