gpt4 book ai didi

mysql - 在 MySQL 中创建运行差异列

转载 作者:行者123 更新时间:2023-11-29 06:41:47 26 4
gpt4 key购买 nike

我想在 MySQL 表中创建一个列,用于计算另一列的最后五个值的运行方差(或标准差,以最简单的为准)。我目前使用三个变量对数据进行排序:ID、日期和一个计数器(对于每个 ID-日期配对,计数器从 1 开始递增)。因此,每次开始新的 ID-日期组合时,我都希望这个新的差异列也能重置。这是我想要的一些示例:

+----+--------+---------+-------+--------------------------+| ID |  date  | counter | value |        var(value)        |+----+--------+---------+-------+--------------------------+| 11 | 1/1/13 |       1 | 2.1   | var(2.1)                 || 11 | 1/1/13 |       2 | 2.4   | var(2.1,2.4)             || 11 | 1/1/13 |       3 | 2.3   | var(2.1,2.4,2.3)         || 11 | 1/1/13 |       4 | 2.5   | var(2.1,2.4,2.3,2.5)     || 11 | 1/1/13 |       5 | 2.3   | var(2.1,2.4,2.3,2.5,2.3) || 11 | 1/1/13 |       6 | 2.5   | var(2.4,2.3,2.5,2.3,2.5) || 11 | 1/3/13 |       1 | 5.4   | var(5.4)                 || 11 | 1/3/13 |       2 | 4.3   | var(5.4,4.3)             || 11 | 1/3/13 |       3 | 3.4   | var(5.4,4.3,3.4)         || 11 | 1/3/13 |       4 | 2.1   | var(5.4,4.3,3.4,2.1)     |+----+--------+---------+-------+--------------------------+

有谁知道如何在 MySQL 中完成此操作?我还没有找到任何与此类似的问题的解决方案。

非常感谢!

最佳答案

您可以使用合适的聚合函数对自联接进行分组,例如VARIANCE() :

SELECT   a.*, VARIANCE(b.value)
FROM my_table a
JOIN my_table b ON b.ID = a.ID
AND b.date = a.date
AND b.counter <= a.counter
GROUP BY a.ID, a.date, a.counter, a.value

查看 sqlfiddle .

关于mysql - 在 MySQL 中创建运行差异列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21056804/

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