gpt4 book ai didi

mysql - 根据前一行中的值计算列值

转载 作者:行者123 更新时间:2023-11-29 00:53:06 28 4
gpt4 key购买 nike

(数据库:MySQL 5)

我有一个名为“数据”的表,其结构如下:

timestamp    value    delta
1234535853 12
1234535934 64
1234536700 22

delta列没有设置,我想设置成

delta(n) = (value(n) - value(n-1)) / (timestamp(n) - timestamp(n-1))

其中 n 是相应的行号(虽然我没有行号索引!“前一行”是具有下一个较低时间戳的行,因为(根据我的研究)MySQL 不支持 ROWNUM 构造).

因此,任务是计算连续行之间的一种“有限差分”。我已经阅读了有关子查询的信息,并认为它们可能是某种方式,但未能成功创建完成任务的子查询。最好的解决方法是什么?

最佳答案

使用

SELECT A.timestamp, A.value, ((A.value - D.value) / (A.timestamp - A.prevtimestamp)) AS delta
FROM
(SELECT X.timestamp, X.value, (SELECT MAX (S.timestamp) FROM data S WHERE S.timestamp < X.timestamp) AS prevtimestamp FROM data X ) A, data D WHERE D.timestamp = A.prevtimestamp
ORDER BY A.timestamp DESC

注意:

由于您没有提供有关表结构等的详细信息,如果 timestamp 不是唯一的,上述查询将失败。

顺便说一句,您应该考虑使用其他列名称,因为这些名称很容易出现问题(保留...)。

编辑 - 关于性能:

如果在 timestamp 列上创建唯一索引,上述查询会快得多!

关于mysql - 根据前一行中的值计算列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7440800/

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